{
  "cells": [
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "cMQCs0oQf5Jo"
      },
      "outputs": [],
      "source": [
        "# Copyright 2025 Google LLC\n",
        "#\n",
        "# Licensed under the Apache License, Version 2.0 (the \"License\");\n",
        "# you may not use this file except in compliance with the License.\n",
        "# You may obtain a copy of the License at\n",
        "#\n",
        "#     https://www.apache.org/licenses/LICENSE-2.0\n",
        "#\n",
        "# Unless required by applicable law or agreed to in writing, software\n",
        "# distributed under the License is distributed on an \"AS IS\" BASIS,\n",
        "# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n",
        "# See the License for the specific language governing permissions and\n",
        "# limitations under the License."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "iR0jdheRGG89"
      },
      "source": [
        "# Introduction to Generative AI functions in BigQuery"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "td9kx9LVgSve"
      },
      "source": [
        "<table align=\"left\">\n",
        "  <td style=\"text-align: center\">\n",
        "    <a href=\"https://colab.research.google.com/github/GoogleCloudPlatform/generative-ai/blob/main/gemini/use-cases/applying-llms-to-data/bigquery_generative_ai_intro.ipynb\">\n",
        "      <img width=\"32px\" src=\"https://www.gstatic.com/pantheon/images/bigquery/welcome_page/colab-logo.svg\" alt=\"Google Colaboratory logo\"><br> Open in Colab\n",
        "    </a>\n",
        "  </td>\n",
        "  <td style=\"text-align: center\">\n",
        "    <a href=\"https://console.cloud.google.com/vertex-ai/colab/import/https:%2F%2Fraw.githubusercontent.com%2FGoogleCloudPlatform%2Fgenerative-ai%2Fmain%2Fgemini%2Fuse-cases%2Fapplying-llms-to-data%2Fbigquery_generative_ai_intro.ipynb\">\n",
        "      <img width=\"32px\" src=\"https://lh3.googleusercontent.com/JmcxdQi-qOpctIvWKgPtrzZdJJK-J3sWE1RsfjZNwshCFgE_9fULcNpuXYTilIR2hjwN\" alt=\"Google Cloud Colab Enterprise logo\"><br> Open in Colab Enterprise\n",
        "    </a>\n",
        "  </td>\n",
        "  <td style=\"text-align: center\">\n",
        "    <a href=\"https://console.cloud.google.com/vertex-ai/workbench/deploy-notebook?download_url=https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/main/gemini/use-cases/applying-llms-to-data/bigquery_generative_ai_intro.ipynb\">\n",
        "      <img src=\"https://www.gstatic.com/images/branding/gcpiconscolors/vertexai/v1/32px.svg\" alt=\"Vertex AI logo\"><br> Open in Vertex AI Workbench\n",
        "    </a>\n",
        "  </td>\n",
        "  <td style=\"text-align: center\">\n",
        "    <a href=\"https://console.cloud.google.com/bigquery/import?url=https://github.com/GoogleCloudPlatform/generative-ai/blob/main/gemini/use-cases/applying-llms-to-data/bigquery_generative_ai_intro.ipynb\">\n",
        "      <img src=\"https://www.gstatic.com/images/branding/gcpiconscolors/bigquery/v1/32px.svg\" alt=\"BigQuery Studio logo\"><br> Open in BigQuery Studio\n",
        "    </a>\n",
        "  </td>\n",
        "  <td style=\"text-align: center\">\n",
        "    <a href=\"https://github.com/GoogleCloudPlatform/generative-ai/blob/main/gemini/use-cases/applying-llms-to-data/bigquery_generative_ai_intro.ipynb\">\n",
        "      <img width=\"32px\" src=\"https://raw.githubusercontent.com/primer/octicons/refs/heads/main/icons/mark-github-24.svg\" alt=\"GitHub logo\"><br> View on GitHub\n",
        "    </a>\n",
        "  </td>\n",
        "</table>\n",
        "\n",
        "<div style=\"clear: both;\"></div>\n",
        "\n",
        "<b>Share to:</b>\n",
        "\n",
        "<a href=\"https://www.linkedin.com/sharing/share-offsite/?url=https%3A//github.com/GoogleCloudPlatform/generative-ai/blob/main/gemini/use-cases/applying-llms-to-data/bigquery_generative_ai_intro.ipynb\" target=\"_blank\">\n",
        "  <img width=\"20px\" src=\"https://upload.wikimedia.org/wikipedia/commons/8/81/LinkedIn_icon.svg\" alt=\"LinkedIn logo\">\n",
        "</a>\n",
        "\n",
        "<a href=\"https://bsky.app/intent/compose?text=https%3A//github.com/GoogleCloudPlatform/generative-ai/blob/main/gemini/use-cases/applying-llms-to-data/bigquery_generative_ai_intro.ipynb\" target=\"_blank\">\n",
        "  <img width=\"20px\" src=\"https://upload.wikimedia.org/wikipedia/commons/7/7a/Bluesky_Logo.svg\" alt=\"Bluesky logo\">\n",
        "</a>\n",
        "\n",
        "<a href=\"https://twitter.com/intent/tweet?url=https%3A//github.com/GoogleCloudPlatform/generative-ai/blob/main/gemini/use-cases/applying-llms-to-data/bigquery_generative_ai_intro.ipynb\" target=\"_blank\">\n",
        "  <img width=\"20px\" src=\"https://upload.wikimedia.org/wikipedia/commons/5/5a/X_icon_2.svg\" alt=\"X logo\">\n",
        "</a>\n",
        "\n",
        "<a href=\"https://reddit.com/submit?url=https%3A//github.com/GoogleCloudPlatform/generative-ai/blob/main/gemini/use-cases/applying-llms-to-data/bigquery_generative_ai_intro.ipynb\" target=\"_blank\">\n",
        "  <img width=\"20px\" src=\"https://redditinc.com/hubfs/Reddit%20Inc/Brand/Reddit_Logo.png\" alt=\"Reddit logo\">\n",
        "</a>\n",
        "\n",
        "<a href=\"https://www.facebook.com/sharer/sharer.php?u=https%3A//github.com/GoogleCloudPlatform/generative-ai/blob/main/gemini/use-cases/applying-llms-to-data/bigquery_generative_ai_intro.ipynb\" target=\"_blank\">\n",
        "  <img width=\"20px\" src=\"https://upload.wikimedia.org/wikipedia/commons/5/51/Facebook_f_logo_%282019%29.svg\" alt=\"Facebook logo\">\n",
        "</a>"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "5h3O5b6P8WEx"
      },
      "source": [
        "| Author(s) |\n",
        "| --- |\n",
        "| [Alicia Williams](https://github.com/aliciawilliams) |"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "intro_md"
      },
      "source": [
        "## Overview\n",
        "\n",
        "This tutorial will guide you through powerful generative AI capabilities available in BigQuery. You'll get hands-on experience using the suite of generative **`AI.*` functions** that integrate directly with powerful models like Gemini. This allows you to perform sophisticated AI-driven analysis on your data right within your familiar SQL environment.\n",
        "\n",
        "While the examples in this notebook will focus on **text inputs** to the generative AI models, many of these capabilities extend to **multi-modal analysis**."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "SwQLISjqGTHd"
      },
      "source": [
        "### Objectives\n",
        "\n",
        "We'll cover how to:\n",
        "\n",
        "* **Prompt models to generate text and structured data** with `AI.GENERATE`, `AI.GENERATE_TABLE`, and `ML.GENERATE_TEXT`.\n",
        "* **Perform powerful, row-level analysis** using scalar functions like `AI.GENERATE_BOOL`, `AI.GENERATE_DOUBLE`, and `AI.GENERATE_INT`.\n",
        "* **Forecast future trends** with time-series data using `AI.FORECAST`."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "costs_md"
      },
      "source": [
        "### Services and Costs\n",
        "\n",
        "This tutorial uses the following billable components of Google Cloud:\n",
        "\n",
        "* **BigQuery**: [Pricing](https://cloud.google.com/bigquery/pricing)\n",
        "\n",
        "* **BigQuery ML**: [Pricing](https://cloud.google.com/bigquery/pricing#bqml)\n",
        "\n",
        "* **Vertex AI**: [Pricing](https://cloud.google.com/vertex-ai/generative-ai/pricing)\n",
        "\n",
        "You can use the [Pricing Calculator](https://cloud.google.com/products/calculator) to generate a cost estimate based on your projected usage."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "nkoCFoFVSPii"
      },
      "source": [
        "---\n",
        "\n",
        "## Before you begin"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "setup_md_1"
      },
      "source": [
        "### Set up your Google Cloud project\n",
        "**The following steps are required, regardless of your notebook environment.**\n",
        "\n",
        "1. [Select or create a Google Cloud project](https://console.cloud.google.com/cloud-resource-manager). When you first create an account, you get a $300 free credit towards your compute/storage costs.\n",
        "\n",
        "2. [Make sure that billing is enabled for your project](https://cloud.google.com/billing/docs/how-to/modify-project).\n",
        "\n",
        "3. [Enable the BigQuery, BigQuery Connection, and Vertex AI APIs](https://console.cloud.google.com/flows/enableapi?apiid=bigquery.googleapis.com,bigqueryconnection.googleapis.com,aiplatform.googleapis.com).\n",
        "\n",
        "4. If you are running this notebook locally, you need to install the [Cloud SDK](https://cloud.google.com/sdk)."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "YQ3g-h7uTaSf"
      },
      "source": [
        "### Set your project ID"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "set_project_id"
      },
      "outputs": [],
      "source": [
        "PROJECT_ID = \"\"  # @param {type:\"string\"}\n",
        "\n",
        "# Set the project id\n",
        "! gcloud config set project {PROJECT_ID}"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "auth_md"
      },
      "source": [
        "### Authenticate to your Google Cloud account\n",
        "\n",
        "Depending on your Jupyter environment, you may have to manually authenticate. Follow the relevant instructions below."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "V6NjZRCXU5Ro"
      },
      "source": [
        "**1. Colab Enterprise or BigQuery Studio Notebooks**\n",
        "* Do nothing as you are already authenticated."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "l0dV1hvAU1ed"
      },
      "source": [
        "**2. Colab, uncomment and run:**"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "auth_code"
      },
      "outputs": [],
      "source": [
        "from google.colab import auth\n",
        "\n",
        "auth.authenticate_user()"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "4Pp4LAJ3UyRP"
      },
      "source": [
        "**3. Local JupyterLab instance, uncomment and run:**\n"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "AzU7S3fMVDkW"
      },
      "outputs": [],
      "source": [
        "# ! gcloud auth login"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "conn_md"
      },
      "source": [
        "### Create BigQuery Cloud resource connection\n",
        "\n",
        "You will need to create a [Cloud resource connection](https://cloud.google.com/bigquery/docs/create-cloud-resource-connection) to enable BigQuery to interact with Vertex AI services."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "conn_code"
      },
      "outputs": [],
      "source": [
        "!bq mk --connection --location=us \\\n",
        "    --connection_type=CLOUD_RESOURCE test_connection"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "perms_md"
      },
      "source": [
        "### Set permissions for Service Account\n",
        "\n",
        "The resource connection service account requires certain project-level permissions to interact with Vertex AI."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "6OqpZNY953xR"
      },
      "outputs": [],
      "source": [
        "SERVICE_ACCT = !bq show --format=prettyjson --connection us.test_connection | grep \"serviceAccountId\" | cut -d '\"' -f 4\n",
        "SERVICE_ACCT_EMAIL = SERVICE_ACCT[-1]\n",
        "print(SERVICE_ACCT_EMAIL)"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "perms_code"
      },
      "outputs": [],
      "source": [
        "import time\n",
        "\n",
        "!gcloud projects add-iam-policy-binding --format=none $PROJECT_ID --member=serviceAccount:$SERVICE_ACCT_EMAIL --role='roles/bigquery.connectionUser'\n",
        "!gcloud projects add-iam-policy-binding --format=none $PROJECT_ID --member=serviceAccount:$SERVICE_ACCT_EMAIL --role='roles/aiplatform.user'\n",
        "\n",
        "# wait 60 seconds, give IAM updates time to propagate, otherwise, following cells will fail\n",
        "time.sleep(60)"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "generate_md_1"
      },
      "source": [
        "---\n",
        "\n",
        "## Generate text and structured data with `AI.GENERATE` and `AI.GENERATE_TABLE`\n",
        "\n",
        "These functions allow you to leverage the power of large language models (LLMs) directly within BigQuery to generate new text content, including creating content with a specified schema. Both functions work by sending requests to your choice of a [generally available](https://cloud.google.com/vertex-ai/generative-ai/docs/models#generally_available_models) or [preview](https://cloud.google.com/vertex-ai/generative-ai/docs/models#preview_models) Gemini model, and then returning that model's response."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "generate_text_md"
      },
      "source": [
        "### Using `AI.GENERATE`: Extract keywords from reviews\n",
        "\n",
        "Let's use the [`AI.GENERATE`](https://cloud.google.com/bigquery/docs/reference/standard-sql/bigqueryml-syntax-ai-generate) function to extract keywords from the movie reviews in the `bigquery-public-data.imdb.reviews` table."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "generate_text_code"
      },
      "outputs": [
        {
          "data": {
            "application/vnd.jupyter.widget-view+json": {
              "model_id": "b86404b88b16427198d9f361229f9626",
              "version_major": 2,
              "version_minor": 0
            },
            "text/plain": [
              "Query is running:   0%|          |"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "data": {
            "application/vnd.jupyter.widget-view+json": {
              "model_id": "86969d5086c84ffca9d4530731148160",
              "version_major": 2,
              "version_minor": 0
            },
            "text/plain": [
              "Downloading:   0%|          |"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "data": {
            "application/vnd.google.colaboratory.intrinsic+json": {
              "summary": "{\n  \"name\": \"get_ipython()\",\n  \"rows\": 5,\n  \"fields\": [\n    {\n      \"column\": \"review\",\n      \"properties\": {\n        \"dtype\": \"string\",\n        \"num_unique_values\": 5,\n        \"samples\": [\n          \"it is a quite slow pace face-to-face Brynner/Douglas...i found there was some pretty heavy violence/gore but you know, seventies giallo style : (maybe some spoiler ahead) a little bit phony and fake but the image is there : the monkey torn apart, the flesh torn from the mechanic, etc...i don't remember if it is alike the novel...but overall i think it is a OK action flick, hero flick : he stands all alone at the end, all the bad guys are out..........and nice images too : a small rocky island, the sun over the seabut not a typical Verne's story-on-cinema : subs, sci-fi; but the adventure seen in a lot of Verne's novels tough\",\n          \"Jules Verne wrote about 80 novels as well as plays and short stories in his career. He began writing in 1854 with a short story called \\\"Master Zacharias, or the Clockmaker's Soul\\\". It was the first time he talked of the negative side of progress - the evil that results from some discoveries or inventions when they fall into the wrong hands. This becomes a running theme in his novels: Captain Nemo in TWENTY THOUSAND LEAGUES UNDER THE SEA, or Robur (from ROBUR THE CONQUEROR and it's sequel, THE MASTER OF THE WORLD) are two of his best examples of this them. Kongre, in THE LIGHTHOUSE AT THE EDGE OF THE WORLD, is another.Verne was so prolific that when he died in 1905 he left a dozen unpublished novels and stories that were not fully published until 1910. They include some of his best writing, such as THE BARSAC MISSION (partly written by Verne's son Michael), THE SURVIVORS OF THE \\\"JONATHAN\\\", THE PURSUIT OF THE METEOR, THE DANUBE PILOT. All of these dealt with science, but also dealt with political systems, and economics, for Verne was interested in all the problems facing modern man. THE LIGHTHOUSE AT THE EDGE OF THE WORLD was the last novel that was published in Verne's lifetime. It does not deal with the political questions or economic ones that perplexed him, but seems to go back to his potboiler period, when he was turning out stories for money while considering better stories for later publication. But nothing Verne wrote is without interest. Rereading THE LIGHTHOUSE one sees what the subtle point is in it. It is the study of how the ego of a villain can prevent him from escaping retribution.Kongre (renamed Jonathan Kongre) is one of the last pirates in the world of 1900. He and his gang find a damaged boat and repair it. They sail it across the Pacific, and reach Staten Island, a small island in the Straits of Magellan controlled by Chile. There they find a lighthouse with a crew of three men. They manage to kill two of them, but the third one (named Vasquez - he's from Chile, remember), hides on the island. Kongre and his men decide that they should prepare to leave the island shortly, before the Chilean Naval relief boat returns in three months to pick up the lighthouse crew. But first they will wreck any boat that comes to the passage, and increase their ill-gotten gains. But the key to the novel (and it is not in the movie) is that Kongre's right hand men (Carcante and Vargas) keep urging him to pack up his supplies and wealth and head to Asia where the money can be divvied up and everyone separate in safety. And each time Kongre won't do it. Initially it is pure greed. He wrecks a boat, and massacres the crew (a scene that is done in the film). The sole survivor is an American, John Davis (the name became Denton in the film, except that it was given to the character of Vasquez). Now with an ally (and not a drunken one, as in the film), Vasquez starts sabotaging Kongre's activities on the island. Carcante keeps suggesting leaving, but Kongre (unused to someone annoying him successfully) keeps delaying in order to catch Vasquez and Davis. The end result is that when he thinks he has them cornered, the Chilean boat appears to sink his craft, kill most of his crew, and confront him. Kongre commits suicide to avoid capture.Much of the mayhem of the movie (with Denton picking off crew members one at a time) is not in the book. Nor is there any female character in the novel (a rarity in most of Verne's stories - he could be quite a feminist when he wished). The egotism of \\\"Jonathan\\\" Kongre is well shown by Yul Brynner's performance, but the subtlety of that trait is lost. The writers presumably did not think the audience could appreciate it. Kirk Douglas does well enough as Denton, but his singlehanded success (Vasquez and Davis work together well to the end of the story, unlike Denton's ally who is killed by the pirates) seems unlikely. The bestiality of the pirates is well shown in the movie, particularly a singularly tall actor who in one scene wears women's clothing to particularly unsettling effect. The film is not a bad minor adventure film, but it could have been better if they had stuck to Verne's theme.\",\n          \"Remove yourself from the Kirk Douglass aspects of the casting. It is essential to your enjoying the film. There is a beautiful young woman playing double roles - and in the photos from the 1800's, I can't believe how smooth and white her skin is. Also, there is an excellent degrading of the film stock which chills the mind if you like faded greys and yellows as I do. This film is played on TNT from time to time so see it.\"\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"keywords\",\n      \"properties\": {\n        \"dtype\": \"string\",\n        \"num_unique_values\": 5,\n        \"samples\": [\n          \"Here are the keywords extracted from the text:\\n\\n*   Brynner\\n*   Douglas\\n*   Slow pace\\n*   Violence\\n*   Gore\\n*   Seventies\\n*   Giallo\\n*   Action flick\\n*   Hero flick\\n*   Novel comparison\\n*   Rocky island\\n*   Jules Verne\\n*   Adventure\\n*   Sci-fi\\n*   Subs\",\n          \"Here are the keywords extracted from the text:\\n\\n*   **Jules Verne**\\n*   **The Lighthouse at the Edge of the World**\\n*   **Kongre** (Jonathan Kongre)\\n*   **Negative side of progress**\\n*   **Villain's ego**\\n*   **Retribution**\\n*   **Master Zacharias, or the Clockmaker's Soul**\\n*   **Twenty Thousand Leagues Under the Sea**\\n*   **Captain Nemo**\\n*   **Robur the Conqueror**\\n*   **The Master of the World**\\n*   **Unpublished novels**\\n*   **Posthumous publications**\\n*   **Science** (theme)\\n*   **Political systems** (theme)\\n*   **Economics** (theme)\\n*   **Pirates**\\n*   **Vasquez**\\n*   **John Davis** (Denton)\\n*   **Film adaptation**\\n*   **Yul Brynner**\\n*   **Kirk Douglas**\\n*   **Staten Island**\\n*   **Straits of Magellan**\",\n          \"Here are the keywords extracted from the text:\\n\\n*   Film Recommendation\\n*   Casting\\n*   Kirk Douglass (reference)\\n*   Double Roles\\n*   Actress\\n*   1800s Photos\\n*   Skin Appearance\\n*   Film Stock Degradation\\n*   Visuals\\n*   Faded Greys and Yellows (Color Palette)\\n*   TNT (Channel)\\n*   Film Availability\"\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    }\n  ]\n}",
              "type": "dataframe"
            },
            "text/html": [
              "\n",
              "  <div id=\"df-c1acde84-768a-40ea-9be8-8d13ca70aea8\" class=\"colab-df-container\">\n",
              "    <div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>review</th>\n",
              "      <th>keywords</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>The Light At The Edge of the World marks Kirk ...</td>\n",
              "      <td>Here are the keywords from the text:\\n\\n*   Th...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>it is a quite slow pace face-to-face Brynner/D...</td>\n",
              "      <td>Here are the keywords extracted from the text:...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>Remove yourself from the Kirk Douglass aspects...</td>\n",
              "      <td>Here are the keywords extracted from the text:...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>Surprising that Jules Verne would write such a...</td>\n",
              "      <td>Here are the keywords extracted from the text:...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>Jules Verne wrote about 80 novels as well as p...</td>\n",
              "      <td>Here are the keywords extracted from the text:...</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>\n",
              "    <div class=\"colab-df-buttons\">\n",
              "\n",
              "  <div class=\"colab-df-container\">\n",
              "    <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-c1acde84-768a-40ea-9be8-8d13ca70aea8')\"\n",
              "            title=\"Convert this dataframe to an interactive table.\"\n",
              "            style=\"display:none;\">\n",
              "\n",
              "  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
              "    <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
              "  </svg>\n",
              "    </button>\n",
              "\n",
              "  <style>\n",
              "    .colab-df-container {\n",
              "      display:flex;\n",
              "      gap: 12px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert {\n",
              "      background-color: #E8F0FE;\n",
              "      border: none;\n",
              "      border-radius: 50%;\n",
              "      cursor: pointer;\n",
              "      display: none;\n",
              "      fill: #1967D2;\n",
              "      height: 32px;\n",
              "      padding: 0 0 0 0;\n",
              "      width: 32px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert:hover {\n",
              "      background-color: #E2EBFA;\n",
              "      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "      fill: #174EA6;\n",
              "    }\n",
              "\n",
              "    .colab-df-buttons div {\n",
              "      margin-bottom: 4px;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert {\n",
              "      background-color: #3B4455;\n",
              "      fill: #D2E3FC;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert:hover {\n",
              "      background-color: #434B5C;\n",
              "      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
              "      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
              "      fill: #FFFFFF;\n",
              "    }\n",
              "  </style>\n",
              "\n",
              "    <script>\n",
              "      const buttonEl =\n",
              "        document.querySelector('#df-c1acde84-768a-40ea-9be8-8d13ca70aea8 button.colab-df-convert');\n",
              "      buttonEl.style.display =\n",
              "        google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "\n",
              "      async function convertToInteractive(key) {\n",
              "        const element = document.querySelector('#df-c1acde84-768a-40ea-9be8-8d13ca70aea8');\n",
              "        const dataTable =\n",
              "          await google.colab.kernel.invokeFunction('convertToInteractive',\n",
              "                                                    [key], {});\n",
              "        if (!dataTable) return;\n",
              "\n",
              "        const docLinkHtml = 'Like what you see? Visit the ' +\n",
              "          '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
              "          + ' to learn more about interactive tables.';\n",
              "        element.innerHTML = '';\n",
              "        dataTable['output_type'] = 'display_data';\n",
              "        await google.colab.output.renderOutput(dataTable, element);\n",
              "        const docLink = document.createElement('div');\n",
              "        docLink.innerHTML = docLinkHtml;\n",
              "        element.appendChild(docLink);\n",
              "      }\n",
              "    </script>\n",
              "  </div>\n",
              "\n",
              "\n",
              "    <div id=\"df-77b2bbb5-a2e4-40ea-94c0-f513af332406\">\n",
              "      <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-77b2bbb5-a2e4-40ea-94c0-f513af332406')\"\n",
              "                title=\"Suggest charts\"\n",
              "                style=\"display:none;\">\n",
              "\n",
              "<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
              "     width=\"24px\">\n",
              "    <g>\n",
              "        <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
              "    </g>\n",
              "</svg>\n",
              "      </button>\n",
              "\n",
              "<style>\n",
              "  .colab-df-quickchart {\n",
              "      --bg-color: #E8F0FE;\n",
              "      --fill-color: #1967D2;\n",
              "      --hover-bg-color: #E2EBFA;\n",
              "      --hover-fill-color: #174EA6;\n",
              "      --disabled-fill-color: #AAA;\n",
              "      --disabled-bg-color: #DDD;\n",
              "  }\n",
              "\n",
              "  [theme=dark] .colab-df-quickchart {\n",
              "      --bg-color: #3B4455;\n",
              "      --fill-color: #D2E3FC;\n",
              "      --hover-bg-color: #434B5C;\n",
              "      --hover-fill-color: #FFFFFF;\n",
              "      --disabled-bg-color: #3B4455;\n",
              "      --disabled-fill-color: #666;\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart {\n",
              "    background-color: var(--bg-color);\n",
              "    border: none;\n",
              "    border-radius: 50%;\n",
              "    cursor: pointer;\n",
              "    display: none;\n",
              "    fill: var(--fill-color);\n",
              "    height: 32px;\n",
              "    padding: 0;\n",
              "    width: 32px;\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart:hover {\n",
              "    background-color: var(--hover-bg-color);\n",
              "    box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "    fill: var(--button-hover-fill-color);\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart-complete:disabled,\n",
              "  .colab-df-quickchart-complete:disabled:hover {\n",
              "    background-color: var(--disabled-bg-color);\n",
              "    fill: var(--disabled-fill-color);\n",
              "    box-shadow: none;\n",
              "  }\n",
              "\n",
              "  .colab-df-spinner {\n",
              "    border: 2px solid var(--fill-color);\n",
              "    border-color: transparent;\n",
              "    border-bottom-color: var(--fill-color);\n",
              "    animation:\n",
              "      spin 1s steps(1) infinite;\n",
              "  }\n",
              "\n",
              "  @keyframes spin {\n",
              "    0% {\n",
              "      border-color: transparent;\n",
              "      border-bottom-color: var(--fill-color);\n",
              "      border-left-color: var(--fill-color);\n",
              "    }\n",
              "    20% {\n",
              "      border-color: transparent;\n",
              "      border-left-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "    }\n",
              "    30% {\n",
              "      border-color: transparent;\n",
              "      border-left-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "      border-right-color: var(--fill-color);\n",
              "    }\n",
              "    40% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "    }\n",
              "    60% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "    }\n",
              "    80% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "      border-bottom-color: var(--fill-color);\n",
              "    }\n",
              "    90% {\n",
              "      border-color: transparent;\n",
              "      border-bottom-color: var(--fill-color);\n",
              "    }\n",
              "  }\n",
              "</style>\n",
              "\n",
              "      <script>\n",
              "        async function quickchart(key) {\n",
              "          const quickchartButtonEl =\n",
              "            document.querySelector('#' + key + ' button');\n",
              "          quickchartButtonEl.disabled = true;  // To prevent multiple clicks.\n",
              "          quickchartButtonEl.classList.add('colab-df-spinner');\n",
              "          try {\n",
              "            const charts = await google.colab.kernel.invokeFunction(\n",
              "                'suggestCharts', [key], {});\n",
              "          } catch (error) {\n",
              "            console.error('Error during call to suggestCharts:', error);\n",
              "          }\n",
              "          quickchartButtonEl.classList.remove('colab-df-spinner');\n",
              "          quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
              "        }\n",
              "        (() => {\n",
              "          let quickchartButtonEl =\n",
              "            document.querySelector('#df-77b2bbb5-a2e4-40ea-94c0-f513af332406 button');\n",
              "          quickchartButtonEl.style.display =\n",
              "            google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "        })();\n",
              "      </script>\n",
              "    </div>\n",
              "\n",
              "    </div>\n",
              "  </div>\n"
            ],
            "text/plain": [
              "                                              review  \\\n",
              "0  The Light At The Edge of the World marks Kirk ...   \n",
              "1  it is a quite slow pace face-to-face Brynner/D...   \n",
              "2  Remove yourself from the Kirk Douglass aspects...   \n",
              "3  Surprising that Jules Verne would write such a...   \n",
              "4  Jules Verne wrote about 80 novels as well as p...   \n",
              "\n",
              "                                            keywords  \n",
              "0  Here are the keywords from the text:\\n\\n*   Th...  \n",
              "1  Here are the keywords extracted from the text:...  \n",
              "2  Here are the keywords extracted from the text:...  \n",
              "3  Here are the keywords extracted from the text:...  \n",
              "4  Here are the keywords extracted from the text:...  "
            ]
          },
          "execution_count": 4,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "%%bigquery --project {PROJECT_ID}\n",
        "\n",
        "SELECT\n",
        "  review,\n",
        "  AI.GENERATE(('Extract the keywords from the text below: ', review),\n",
        "    connection_id => 'us.test_connection',\n",
        "    endpoint => 'gemini-2.5-flash').result AS keywords\n",
        "FROM\n",
        "  `bigquery-public-data.imdb.reviews`\n",
        "WHERE movie_id = \"tt0067345\"\n",
        "LIMIT 5\n",
        ";"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "ZiVKjzbVcZ2x"
      },
      "source": [
        "You can see that BigQuery has prompted the specified model for each row of the data and returned the response."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "Ulkyyt6pUpfQ"
      },
      "source": [
        "#### Using arguments to adjust model configuration\n",
        "In addition to the `prompt`, `connection_id`, and `endpoint`, there are additional arguments available in `AI.GENERATE` at your disposal for customizing your generation request."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "bY5ksh35WMnd"
      },
      "source": [
        "##### The `model_params` argument\n",
        "There are several parameters you can specify within the `model_params` argument. You can read more about which specific parameters are available for `AI.GENERATE` in the [documentation](https://cloud.google.com/bigquery/docs/reference/standard-sql/bigqueryml-syntax-ai-generate#arguments). The next query adds custom `temperature` and `maxOutputTokens` parameters.\n",
        "\n",
        "* The `temperature` parameter controls the randomness of the response, where a lower value makes the output more predictable and focused, while a higher value encourages more creative and diverse results.\n",
        "\n",
        "* The `maxOutputTokens` parameter sets the maximum length of the model's response by limiting the total number of tokens (pieces of words) it can generate.\n",
        "\n",
        "You can read more about the various parameters [here](https://cloud.google.com/vertex-ai/generative-ai/docs/model-reference/inference#generationconfig), and the parameters' default values are documented in the model card in the [model documentation for Vertex AI](https://cloud.google.com/vertex-ai/generative-ai/docs/models)."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "61nesgOtWkWs"
      },
      "outputs": [
        {
          "data": {
            "application/vnd.jupyter.widget-view+json": {
              "model_id": "27fdc61969344758a1a85f95df268ba5",
              "version_major": 2,
              "version_minor": 0
            },
            "text/plain": [
              "Query is running:   0%|          |"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "data": {
            "application/vnd.jupyter.widget-view+json": {
              "model_id": "6537e8d8c6e94ff3a6d2a999c9f298a5",
              "version_major": 2,
              "version_minor": 0
            },
            "text/plain": [
              "Downloading:   0%|          |"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "data": {
            "application/vnd.google.colaboratory.intrinsic+json": {
              "summary": "{\n  \"name\": \"get_ipython()\",\n  \"rows\": 5,\n  \"fields\": [\n    {\n      \"column\": \"review\",\n      \"properties\": {\n        \"dtype\": \"string\",\n        \"num_unique_values\": 5,\n        \"samples\": [\n          \"it is a quite slow pace face-to-face Brynner/Douglas...i found there was some pretty heavy violence/gore but you know, seventies giallo style : (maybe some spoiler ahead) a little bit phony and fake but the image is there : the monkey torn apart, the flesh torn from the mechanic, etc...i don't remember if it is alike the novel...but overall i think it is a OK action flick, hero flick : he stands all alone at the end, all the bad guys are out..........and nice images too : a small rocky island, the sun over the seabut not a typical Verne's story-on-cinema : subs, sci-fi; but the adventure seen in a lot of Verne's novels tough\",\n          \"Jules Verne wrote about 80 novels as well as plays and short stories in his career. He began writing in 1854 with a short story called \\\"Master Zacharias, or the Clockmaker's Soul\\\". It was the first time he talked of the negative side of progress - the evil that results from some discoveries or inventions when they fall into the wrong hands. This becomes a running theme in his novels: Captain Nemo in TWENTY THOUSAND LEAGUES UNDER THE SEA, or Robur (from ROBUR THE CONQUEROR and it's sequel, THE MASTER OF THE WORLD) are two of his best examples of this them. Kongre, in THE LIGHTHOUSE AT THE EDGE OF THE WORLD, is another.Verne was so prolific that when he died in 1905 he left a dozen unpublished novels and stories that were not fully published until 1910. They include some of his best writing, such as THE BARSAC MISSION (partly written by Verne's son Michael), THE SURVIVORS OF THE \\\"JONATHAN\\\", THE PURSUIT OF THE METEOR, THE DANUBE PILOT. All of these dealt with science, but also dealt with political systems, and economics, for Verne was interested in all the problems facing modern man. THE LIGHTHOUSE AT THE EDGE OF THE WORLD was the last novel that was published in Verne's lifetime. It does not deal with the political questions or economic ones that perplexed him, but seems to go back to his potboiler period, when he was turning out stories for money while considering better stories for later publication. But nothing Verne wrote is without interest. Rereading THE LIGHTHOUSE one sees what the subtle point is in it. It is the study of how the ego of a villain can prevent him from escaping retribution.Kongre (renamed Jonathan Kongre) is one of the last pirates in the world of 1900. He and his gang find a damaged boat and repair it. They sail it across the Pacific, and reach Staten Island, a small island in the Straits of Magellan controlled by Chile. There they find a lighthouse with a crew of three men. They manage to kill two of them, but the third one (named Vasquez - he's from Chile, remember), hides on the island. Kongre and his men decide that they should prepare to leave the island shortly, before the Chilean Naval relief boat returns in three months to pick up the lighthouse crew. But first they will wreck any boat that comes to the passage, and increase their ill-gotten gains. But the key to the novel (and it is not in the movie) is that Kongre's right hand men (Carcante and Vargas) keep urging him to pack up his supplies and wealth and head to Asia where the money can be divvied up and everyone separate in safety. And each time Kongre won't do it. Initially it is pure greed. He wrecks a boat, and massacres the crew (a scene that is done in the film). The sole survivor is an American, John Davis (the name became Denton in the film, except that it was given to the character of Vasquez). Now with an ally (and not a drunken one, as in the film), Vasquez starts sabotaging Kongre's activities on the island. Carcante keeps suggesting leaving, but Kongre (unused to someone annoying him successfully) keeps delaying in order to catch Vasquez and Davis. The end result is that when he thinks he has them cornered, the Chilean boat appears to sink his craft, kill most of his crew, and confront him. Kongre commits suicide to avoid capture.Much of the mayhem of the movie (with Denton picking off crew members one at a time) is not in the book. Nor is there any female character in the novel (a rarity in most of Verne's stories - he could be quite a feminist when he wished). The egotism of \\\"Jonathan\\\" Kongre is well shown by Yul Brynner's performance, but the subtlety of that trait is lost. The writers presumably did not think the audience could appreciate it. Kirk Douglas does well enough as Denton, but his singlehanded success (Vasquez and Davis work together well to the end of the story, unlike Denton's ally who is killed by the pirates) seems unlikely. The bestiality of the pirates is well shown in the movie, particularly a singularly tall actor who in one scene wears women's clothing to particularly unsettling effect. The film is not a bad minor adventure film, but it could have been better if they had stuck to Verne's theme.\",\n          \"Remove yourself from the Kirk Douglass aspects of the casting. It is essential to your enjoying the film. There is a beautiful young woman playing double roles - and in the photos from the 1800's, I can't believe how smooth and white her skin is. Also, there is an excellent degrading of the film stock which chills the mind if you like faded greys and yellows as I do. This film is played on TNT from time to time so see it.\"\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"keywords\",\n      \"properties\": {\n        \"dtype\": \"category\",\n        \"num_unique_values\": 2,\n        \"samples\": [\n          \"Here are the keywords from the text:\\n\\n*   Jules Verne\\n*   Hollywood\\n*   Movie review\\n*   Yul Brynner\\n*   Douglass\\n*   \",\n          \"Here are the keywords from the text:\\n\\n*   Film\\n*   Casting\\n*   Kirk Douglas\\n*   Double roles\\n*   1800s photos\\n*   Film stock degrading\\n*   Faded greys and yellows\\n*   TNT\"\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    }\n  ]\n}",
              "type": "dataframe"
            },
            "text/html": [
              "\n",
              "  <div id=\"df-cce5fe2b-3ff3-43f9-9f15-82a59c236938\" class=\"colab-df-container\">\n",
              "    <div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>review</th>\n",
              "      <th>keywords</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>The Light At The Edge of the World marks Kirk ...</td>\n",
              "      <td>None</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>it is a quite slow pace face-to-face Brynner/D...</td>\n",
              "      <td>None</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>Remove yourself from the Kirk Douglass aspects...</td>\n",
              "      <td>Here are the keywords from the text:\\n\\n*   Fi...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>Surprising that Jules Verne would write such a...</td>\n",
              "      <td>Here are the keywords from the text:\\n\\n*   Ju...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>Jules Verne wrote about 80 novels as well as p...</td>\n",
              "      <td>None</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>\n",
              "    <div class=\"colab-df-buttons\">\n",
              "\n",
              "  <div class=\"colab-df-container\">\n",
              "    <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-cce5fe2b-3ff3-43f9-9f15-82a59c236938')\"\n",
              "            title=\"Convert this dataframe to an interactive table.\"\n",
              "            style=\"display:none;\">\n",
              "\n",
              "  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
              "    <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
              "  </svg>\n",
              "    </button>\n",
              "\n",
              "  <style>\n",
              "    .colab-df-container {\n",
              "      display:flex;\n",
              "      gap: 12px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert {\n",
              "      background-color: #E8F0FE;\n",
              "      border: none;\n",
              "      border-radius: 50%;\n",
              "      cursor: pointer;\n",
              "      display: none;\n",
              "      fill: #1967D2;\n",
              "      height: 32px;\n",
              "      padding: 0 0 0 0;\n",
              "      width: 32px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert:hover {\n",
              "      background-color: #E2EBFA;\n",
              "      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "      fill: #174EA6;\n",
              "    }\n",
              "\n",
              "    .colab-df-buttons div {\n",
              "      margin-bottom: 4px;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert {\n",
              "      background-color: #3B4455;\n",
              "      fill: #D2E3FC;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert:hover {\n",
              "      background-color: #434B5C;\n",
              "      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
              "      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
              "      fill: #FFFFFF;\n",
              "    }\n",
              "  </style>\n",
              "\n",
              "    <script>\n",
              "      const buttonEl =\n",
              "        document.querySelector('#df-cce5fe2b-3ff3-43f9-9f15-82a59c236938 button.colab-df-convert');\n",
              "      buttonEl.style.display =\n",
              "        google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "\n",
              "      async function convertToInteractive(key) {\n",
              "        const element = document.querySelector('#df-cce5fe2b-3ff3-43f9-9f15-82a59c236938');\n",
              "        const dataTable =\n",
              "          await google.colab.kernel.invokeFunction('convertToInteractive',\n",
              "                                                    [key], {});\n",
              "        if (!dataTable) return;\n",
              "\n",
              "        const docLinkHtml = 'Like what you see? Visit the ' +\n",
              "          '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
              "          + ' to learn more about interactive tables.';\n",
              "        element.innerHTML = '';\n",
              "        dataTable['output_type'] = 'display_data';\n",
              "        await google.colab.output.renderOutput(dataTable, element);\n",
              "        const docLink = document.createElement('div');\n",
              "        docLink.innerHTML = docLinkHtml;\n",
              "        element.appendChild(docLink);\n",
              "      }\n",
              "    </script>\n",
              "  </div>\n",
              "\n",
              "\n",
              "    <div id=\"df-f4020dcf-5ab2-4970-81bf-949f449615b2\">\n",
              "      <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-f4020dcf-5ab2-4970-81bf-949f449615b2')\"\n",
              "                title=\"Suggest charts\"\n",
              "                style=\"display:none;\">\n",
              "\n",
              "<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
              "     width=\"24px\">\n",
              "    <g>\n",
              "        <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
              "    </g>\n",
              "</svg>\n",
              "      </button>\n",
              "\n",
              "<style>\n",
              "  .colab-df-quickchart {\n",
              "      --bg-color: #E8F0FE;\n",
              "      --fill-color: #1967D2;\n",
              "      --hover-bg-color: #E2EBFA;\n",
              "      --hover-fill-color: #174EA6;\n",
              "      --disabled-fill-color: #AAA;\n",
              "      --disabled-bg-color: #DDD;\n",
              "  }\n",
              "\n",
              "  [theme=dark] .colab-df-quickchart {\n",
              "      --bg-color: #3B4455;\n",
              "      --fill-color: #D2E3FC;\n",
              "      --hover-bg-color: #434B5C;\n",
              "      --hover-fill-color: #FFFFFF;\n",
              "      --disabled-bg-color: #3B4455;\n",
              "      --disabled-fill-color: #666;\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart {\n",
              "    background-color: var(--bg-color);\n",
              "    border: none;\n",
              "    border-radius: 50%;\n",
              "    cursor: pointer;\n",
              "    display: none;\n",
              "    fill: var(--fill-color);\n",
              "    height: 32px;\n",
              "    padding: 0;\n",
              "    width: 32px;\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart:hover {\n",
              "    background-color: var(--hover-bg-color);\n",
              "    box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "    fill: var(--button-hover-fill-color);\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart-complete:disabled,\n",
              "  .colab-df-quickchart-complete:disabled:hover {\n",
              "    background-color: var(--disabled-bg-color);\n",
              "    fill: var(--disabled-fill-color);\n",
              "    box-shadow: none;\n",
              "  }\n",
              "\n",
              "  .colab-df-spinner {\n",
              "    border: 2px solid var(--fill-color);\n",
              "    border-color: transparent;\n",
              "    border-bottom-color: var(--fill-color);\n",
              "    animation:\n",
              "      spin 1s steps(1) infinite;\n",
              "  }\n",
              "\n",
              "  @keyframes spin {\n",
              "    0% {\n",
              "      border-color: transparent;\n",
              "      border-bottom-color: var(--fill-color);\n",
              "      border-left-color: var(--fill-color);\n",
              "    }\n",
              "    20% {\n",
              "      border-color: transparent;\n",
              "      border-left-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "    }\n",
              "    30% {\n",
              "      border-color: transparent;\n",
              "      border-left-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "      border-right-color: var(--fill-color);\n",
              "    }\n",
              "    40% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "    }\n",
              "    60% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "    }\n",
              "    80% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "      border-bottom-color: var(--fill-color);\n",
              "    }\n",
              "    90% {\n",
              "      border-color: transparent;\n",
              "      border-bottom-color: var(--fill-color);\n",
              "    }\n",
              "  }\n",
              "</style>\n",
              "\n",
              "      <script>\n",
              "        async function quickchart(key) {\n",
              "          const quickchartButtonEl =\n",
              "            document.querySelector('#' + key + ' button');\n",
              "          quickchartButtonEl.disabled = true;  // To prevent multiple clicks.\n",
              "          quickchartButtonEl.classList.add('colab-df-spinner');\n",
              "          try {\n",
              "            const charts = await google.colab.kernel.invokeFunction(\n",
              "                'suggestCharts', [key], {});\n",
              "          } catch (error) {\n",
              "            console.error('Error during call to suggestCharts:', error);\n",
              "          }\n",
              "          quickchartButtonEl.classList.remove('colab-df-spinner');\n",
              "          quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
              "        }\n",
              "        (() => {\n",
              "          let quickchartButtonEl =\n",
              "            document.querySelector('#df-f4020dcf-5ab2-4970-81bf-949f449615b2 button');\n",
              "          quickchartButtonEl.style.display =\n",
              "            google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "        })();\n",
              "      </script>\n",
              "    </div>\n",
              "\n",
              "    </div>\n",
              "  </div>\n"
            ],
            "text/plain": [
              "                                              review  \\\n",
              "0  The Light At The Edge of the World marks Kirk ...   \n",
              "1  it is a quite slow pace face-to-face Brynner/D...   \n",
              "2  Remove yourself from the Kirk Douglass aspects...   \n",
              "3  Surprising that Jules Verne would write such a...   \n",
              "4  Jules Verne wrote about 80 novels as well as p...   \n",
              "\n",
              "                                            keywords  \n",
              "0                                               None  \n",
              "1                                               None  \n",
              "2  Here are the keywords from the text:\\n\\n*   Fi...  \n",
              "3  Here are the keywords from the text:\\n\\n*   Ju...  \n",
              "4                                               None  "
            ]
          },
          "execution_count": 6,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "%%bigquery --project {PROJECT_ID}\n",
        "\n",
        "SELECT\n",
        "  review,\n",
        "  AI.GENERATE(('Extract the keywords from the text below: ', review),\n",
        "    connection_id => 'us.test_connection',\n",
        "    endpoint => 'gemini-2.5-flash',\n",
        "    model_params => JSON '{\"generationConfig\":{\"temperature\": 0.5, \"maxOutputTokens\": 1000}}'\n",
        "    ).result AS keywords\n",
        "FROM\n",
        "  `bigquery-public-data.imdb.reviews`\n",
        "WHERE movie_id = \"tt0067345\"\n",
        "LIMIT 5\n",
        ";"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "FnSyQrNzb_4A"
      },
      "source": [
        "Why are some of the responses empty? By setting the `maxOutputTokens` value to 1,000 (much lower than the default 65,535 which was used in the first queries), you are seeing this limit in action. Gemini 2.5 Flash has [thinking capabilities](https://cloud.google.com/vertex-ai/generative-ai/docs/thinking), which means the model goes through a \"thinking process\" before determining and returning its response, and this thinking process consumes output tokens. In this case, the model is hitting its `maxOutputTokens` value before it moves from its thinking process to returning the actual response.\n",
        "\n",
        "You can resolve this issue by increasing the `maxOutputTokens` value and/or setting a `thinking_budget` to limit the amount of tokens that can be consumed by the thinking process."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "aBBpEQIYJ2Dt"
      },
      "source": [
        "###### Setting a `thinking_budget`\n",
        "\n",
        "You can set a [`thinking_budget`](https://cloud.google.com/bigquery/docs/reference/standard-sql/bigqueryml-syntax-ai-generate#thinking-budget) to manage how many output tokens are allocated to the thinking phase of the model's response development.\n",
        "\n",
        "The next query shows how to set the `thinking_budget` as an additional parameter in the `model_params` argument."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "L2fNyr7aGbDP"
      },
      "outputs": [
        {
          "data": {
            "application/vnd.jupyter.widget-view+json": {
              "model_id": "59f3ea2c89954476afb1dac2b994a773",
              "version_major": 2,
              "version_minor": 0
            },
            "text/plain": [
              "Query is running:   0%|          |"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "data": {
            "application/vnd.jupyter.widget-view+json": {
              "model_id": "83da749eb4254776ac77be181fb145a9",
              "version_major": 2,
              "version_minor": 0
            },
            "text/plain": [
              "Downloading:   0%|          |"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "data": {
            "application/vnd.google.colaboratory.intrinsic+json": {
              "summary": "{\n  \"name\": \"get_ipython()\",\n  \"rows\": 5,\n  \"fields\": [\n    {\n      \"column\": \"review\",\n      \"properties\": {\n        \"dtype\": \"string\",\n        \"num_unique_values\": 5,\n        \"samples\": [\n          \"Surprising that Jules Verne would write such a story. Even more surprising that Hollywood would produce it. Yul Brynner is unbelievably good as a man freed of all bounds of convention, free to indulge his taste for cruelty and domination. Douglass is an excellent counterpoint, a courageous individual who's chosen simple solitude as a way to deal with the complications and turmoil society had imposed on him. And Samantha Egger's character is the capper, a woman willing to sacrifice far too much for comfort and safety. Inotherwords, everyman. The movie does show its age and is limited by the conventions of time and place and technology of the time. If you're looking for special effects and action as substitutes for thought, look elsewhere.\",\n          \"Jules Verne wrote about 80 novels as well as plays and short stories in his career. He began writing in 1854 with a short story called \\\"Master Zacharias, or the Clockmaker's Soul\\\". It was the first time he talked of the negative side of progress - the evil that results from some discoveries or inventions when they fall into the wrong hands. This becomes a running theme in his novels: Captain Nemo in TWENTY THOUSAND LEAGUES UNDER THE SEA, or Robur (from ROBUR THE CONQUEROR and it's sequel, THE MASTER OF THE WORLD) are two of his best examples of this them. Kongre, in THE LIGHTHOUSE AT THE EDGE OF THE WORLD, is another.Verne was so prolific that when he died in 1905 he left a dozen unpublished novels and stories that were not fully published until 1910. They include some of his best writing, such as THE BARSAC MISSION (partly written by Verne's son Michael), THE SURVIVORS OF THE \\\"JONATHAN\\\", THE PURSUIT OF THE METEOR, THE DANUBE PILOT. All of these dealt with science, but also dealt with political systems, and economics, for Verne was interested in all the problems facing modern man. THE LIGHTHOUSE AT THE EDGE OF THE WORLD was the last novel that was published in Verne's lifetime. It does not deal with the political questions or economic ones that perplexed him, but seems to go back to his potboiler period, when he was turning out stories for money while considering better stories for later publication. But nothing Verne wrote is without interest. Rereading THE LIGHTHOUSE one sees what the subtle point is in it. It is the study of how the ego of a villain can prevent him from escaping retribution.Kongre (renamed Jonathan Kongre) is one of the last pirates in the world of 1900. He and his gang find a damaged boat and repair it. They sail it across the Pacific, and reach Staten Island, a small island in the Straits of Magellan controlled by Chile. There they find a lighthouse with a crew of three men. They manage to kill two of them, but the third one (named Vasquez - he's from Chile, remember), hides on the island. Kongre and his men decide that they should prepare to leave the island shortly, before the Chilean Naval relief boat returns in three months to pick up the lighthouse crew. But first they will wreck any boat that comes to the passage, and increase their ill-gotten gains. But the key to the novel (and it is not in the movie) is that Kongre's right hand men (Carcante and Vargas) keep urging him to pack up his supplies and wealth and head to Asia where the money can be divvied up and everyone separate in safety. And each time Kongre won't do it. Initially it is pure greed. He wrecks a boat, and massacres the crew (a scene that is done in the film). The sole survivor is an American, John Davis (the name became Denton in the film, except that it was given to the character of Vasquez). Now with an ally (and not a drunken one, as in the film), Vasquez starts sabotaging Kongre's activities on the island. Carcante keeps suggesting leaving, but Kongre (unused to someone annoying him successfully) keeps delaying in order to catch Vasquez and Davis. The end result is that when he thinks he has them cornered, the Chilean boat appears to sink his craft, kill most of his crew, and confront him. Kongre commits suicide to avoid capture.Much of the mayhem of the movie (with Denton picking off crew members one at a time) is not in the book. Nor is there any female character in the novel (a rarity in most of Verne's stories - he could be quite a feminist when he wished). The egotism of \\\"Jonathan\\\" Kongre is well shown by Yul Brynner's performance, but the subtlety of that trait is lost. The writers presumably did not think the audience could appreciate it. Kirk Douglas does well enough as Denton, but his singlehanded success (Vasquez and Davis work together well to the end of the story, unlike Denton's ally who is killed by the pirates) seems unlikely. The bestiality of the pirates is well shown in the movie, particularly a singularly tall actor who in one scene wears women's clothing to particularly unsettling effect. The film is not a bad minor adventure film, but it could have been better if they had stuck to Verne's theme.\",\n          \"The Light At The Edge of the World marks Kirk Douglas's second filming of a Jules Verne novel. The first of course was one of his most popular films 20,000 Leagues Under The Sea. But this film is far more serious and has far more adult themes than Walt Disney's film aimed for the kid trade.This was the last novel Jules Verne had published during his lifetime and it's a story of survival against almost impossible odds. In the original novel Kirk Douglas's character was named Vasquez which certainly was more in keeping with someone assigned to lighthouse duty on Cape Horn. But in giving Douglas's character an Anglo name it better explains his presence on the island and it certainly is in keeping with the international tradition of Jules Verne's writings.Cape Horn is one of the loneliest parts of the globe and the geography of the southern tip of South America. Look on a map of the many islands and rocks in that part of the globe and imagine how rough the sea is because it has only limited space. It's not without reason that sailors in all cultures say that no one is really a true sailor until they've made a voyage crossing from the Atlantic to the Pacific Ocean in that area. Remember also this is 1865 as Yul Brynner identifies the year and the Panama Canal had not been built.Which makes the lighthouse at Cape Horn an international concern which was something that is ever present in Jules Verne's writings. But then as now there are malevolent forces in the world and they are in this story Yul Brynner and his pirate crew.On one desultory like any other down there, Yul Brynner's ship docks at the island and kills lighthouse keeper Fernando Rey and his young assistant Massimo Ranieri. By sheer dumb luck Douglas is not at the lighthouse when this happens, but he becomes a hunted man by Brynner and his pirate crew who want to set up headquarters there and use the light to pile up as many wrecks as they can plunder. Also they want to eliminate Douglas who's now the only witness to their crimes.I did like this film very much both when first seeing it in the theater and now on VHS. One thing of interest I found here is that there is no ambiguity, no shadings of character. Kirk Douglas is a good guy and Yul Brynner a bad one, no one is going to walk away thinking anything else. In fact Yul Brynner's pirate captain Jonathan Kongre is the most unredeemable villain we've seen on screen since Lee Marvin as Liberty Valance.Definitely fans of Kirk Douglas, Yul Brynner and Jules Verne should earmark this film for their collection.\"\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"keywords\",\n      \"properties\": {\n        \"dtype\": \"string\",\n        \"num_unique_values\": 5,\n        \"samples\": [\n          \"Here are the keywords extracted from the text:\\n\\n*   Jules Verne\\n*   Hollywood\\n*   Yul Brynner\\n*   Cruelty\\n*   Domination\\n*   Douglass\\n*   Solitude\\n*   Samantha Egger\\n*   Sacrifice\\n*   Movie review\\n*   Film conventions\\n*   Aging film\\n*   Lack of special effects\\n*   Thought-provoking (implied by \\\"substitutes for thought\\\")\",\n          \"Here's a list of keywords extracted from the text, categorized for clarity:\\n\\n**Authors & People:**\\n*   Jules Verne\\n*   Michael Verne\\n*   Captain Nemo\\n*   Robur\\n*   Kongre (Jonathan Kongre)\\n*   Vasquez\\n*   John Davis\\n*   Carcante\\n*   V\",\n          \"Here's a list of keywords extracted from the text, categorized for clarity:\\n\\n**Film & Production:**\\n*   The Light At The Edge of the World\\n*   Kirk Douglas\\n*   Jules Verne (novel, writings)\\n*   20,000 Leagues Under The Sea\\n*   Walt Disney\\n*   Yul Brynner\\n*   Fernando Rey\\n*   Massimo Ranieri\\n*   Jonathan Kongre (Yul Brynner's character)\\n*   Film / Movie\\n*   Novel (source material)\\n*   VHS (viewing format)\\n\\n**Themes & Concepts:**\\n*   Survival\\n*   Impossible odds\\n*   Adult themes\\n*   International tradition\\n*   Malevolent forces\\n*   Pirate crew\\n*   Villain\\n*   Witness\\n*   No ambiguity (characterization)\\n\\n**Locations & Setting:**\\n*   Cape Horn\\n*   Lighthouse\\n*   Island\\n*   Southern tip of South America\\n*   Atlantic Ocean\\n*   Pacific Ocean\\n*   Panama Canal (historical context)\\n\\n**Time Period:**\\n*   1865\"\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    }\n  ]\n}",
              "type": "dataframe"
            },
            "text/html": [
              "\n",
              "  <div id=\"df-1393bbc5-e102-44b4-8636-8e12ff75526b\" class=\"colab-df-container\">\n",
              "    <div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>review</th>\n",
              "      <th>keywords</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>Remove yourself from the Kirk Douglass aspects...</td>\n",
              "      <td>Here are the keywords extracted from the text:...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>Surprising that Jules Verne would write such a...</td>\n",
              "      <td>Here are the keywords extracted from the text:...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>The Light At The Edge of the World marks Kirk ...</td>\n",
              "      <td>Here's a list of keywords extracted from the t...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>it is a quite slow pace face-to-face Brynner/D...</td>\n",
              "      <td>Here are the keywords extracted from the text:...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>Jules Verne wrote about 80 novels as well as p...</td>\n",
              "      <td>Here's a list of keywords extracted from the t...</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>\n",
              "    <div class=\"colab-df-buttons\">\n",
              "\n",
              "  <div class=\"colab-df-container\">\n",
              "    <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-1393bbc5-e102-44b4-8636-8e12ff75526b')\"\n",
              "            title=\"Convert this dataframe to an interactive table.\"\n",
              "            style=\"display:none;\">\n",
              "\n",
              "  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
              "    <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
              "  </svg>\n",
              "    </button>\n",
              "\n",
              "  <style>\n",
              "    .colab-df-container {\n",
              "      display:flex;\n",
              "      gap: 12px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert {\n",
              "      background-color: #E8F0FE;\n",
              "      border: none;\n",
              "      border-radius: 50%;\n",
              "      cursor: pointer;\n",
              "      display: none;\n",
              "      fill: #1967D2;\n",
              "      height: 32px;\n",
              "      padding: 0 0 0 0;\n",
              "      width: 32px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert:hover {\n",
              "      background-color: #E2EBFA;\n",
              "      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "      fill: #174EA6;\n",
              "    }\n",
              "\n",
              "    .colab-df-buttons div {\n",
              "      margin-bottom: 4px;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert {\n",
              "      background-color: #3B4455;\n",
              "      fill: #D2E3FC;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert:hover {\n",
              "      background-color: #434B5C;\n",
              "      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
              "      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
              "      fill: #FFFFFF;\n",
              "    }\n",
              "  </style>\n",
              "\n",
              "    <script>\n",
              "      const buttonEl =\n",
              "        document.querySelector('#df-1393bbc5-e102-44b4-8636-8e12ff75526b button.colab-df-convert');\n",
              "      buttonEl.style.display =\n",
              "        google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "\n",
              "      async function convertToInteractive(key) {\n",
              "        const element = document.querySelector('#df-1393bbc5-e102-44b4-8636-8e12ff75526b');\n",
              "        const dataTable =\n",
              "          await google.colab.kernel.invokeFunction('convertToInteractive',\n",
              "                                                    [key], {});\n",
              "        if (!dataTable) return;\n",
              "\n",
              "        const docLinkHtml = 'Like what you see? Visit the ' +\n",
              "          '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
              "          + ' to learn more about interactive tables.';\n",
              "        element.innerHTML = '';\n",
              "        dataTable['output_type'] = 'display_data';\n",
              "        await google.colab.output.renderOutput(dataTable, element);\n",
              "        const docLink = document.createElement('div');\n",
              "        docLink.innerHTML = docLinkHtml;\n",
              "        element.appendChild(docLink);\n",
              "      }\n",
              "    </script>\n",
              "  </div>\n",
              "\n",
              "\n",
              "    <div id=\"df-23b8952d-049d-4244-b2d0-1c3e5258a500\">\n",
              "      <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-23b8952d-049d-4244-b2d0-1c3e5258a500')\"\n",
              "                title=\"Suggest charts\"\n",
              "                style=\"display:none;\">\n",
              "\n",
              "<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
              "     width=\"24px\">\n",
              "    <g>\n",
              "        <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
              "    </g>\n",
              "</svg>\n",
              "      </button>\n",
              "\n",
              "<style>\n",
              "  .colab-df-quickchart {\n",
              "      --bg-color: #E8F0FE;\n",
              "      --fill-color: #1967D2;\n",
              "      --hover-bg-color: #E2EBFA;\n",
              "      --hover-fill-color: #174EA6;\n",
              "      --disabled-fill-color: #AAA;\n",
              "      --disabled-bg-color: #DDD;\n",
              "  }\n",
              "\n",
              "  [theme=dark] .colab-df-quickchart {\n",
              "      --bg-color: #3B4455;\n",
              "      --fill-color: #D2E3FC;\n",
              "      --hover-bg-color: #434B5C;\n",
              "      --hover-fill-color: #FFFFFF;\n",
              "      --disabled-bg-color: #3B4455;\n",
              "      --disabled-fill-color: #666;\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart {\n",
              "    background-color: var(--bg-color);\n",
              "    border: none;\n",
              "    border-radius: 50%;\n",
              "    cursor: pointer;\n",
              "    display: none;\n",
              "    fill: var(--fill-color);\n",
              "    height: 32px;\n",
              "    padding: 0;\n",
              "    width: 32px;\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart:hover {\n",
              "    background-color: var(--hover-bg-color);\n",
              "    box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "    fill: var(--button-hover-fill-color);\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart-complete:disabled,\n",
              "  .colab-df-quickchart-complete:disabled:hover {\n",
              "    background-color: var(--disabled-bg-color);\n",
              "    fill: var(--disabled-fill-color);\n",
              "    box-shadow: none;\n",
              "  }\n",
              "\n",
              "  .colab-df-spinner {\n",
              "    border: 2px solid var(--fill-color);\n",
              "    border-color: transparent;\n",
              "    border-bottom-color: var(--fill-color);\n",
              "    animation:\n",
              "      spin 1s steps(1) infinite;\n",
              "  }\n",
              "\n",
              "  @keyframes spin {\n",
              "    0% {\n",
              "      border-color: transparent;\n",
              "      border-bottom-color: var(--fill-color);\n",
              "      border-left-color: var(--fill-color);\n",
              "    }\n",
              "    20% {\n",
              "      border-color: transparent;\n",
              "      border-left-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "    }\n",
              "    30% {\n",
              "      border-color: transparent;\n",
              "      border-left-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "      border-right-color: var(--fill-color);\n",
              "    }\n",
              "    40% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "    }\n",
              "    60% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "    }\n",
              "    80% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "      border-bottom-color: var(--fill-color);\n",
              "    }\n",
              "    90% {\n",
              "      border-color: transparent;\n",
              "      border-bottom-color: var(--fill-color);\n",
              "    }\n",
              "  }\n",
              "</style>\n",
              "\n",
              "      <script>\n",
              "        async function quickchart(key) {\n",
              "          const quickchartButtonEl =\n",
              "            document.querySelector('#' + key + ' button');\n",
              "          quickchartButtonEl.disabled = true;  // To prevent multiple clicks.\n",
              "          quickchartButtonEl.classList.add('colab-df-spinner');\n",
              "          try {\n",
              "            const charts = await google.colab.kernel.invokeFunction(\n",
              "                'suggestCharts', [key], {});\n",
              "          } catch (error) {\n",
              "            console.error('Error during call to suggestCharts:', error);\n",
              "          }\n",
              "          quickchartButtonEl.classList.remove('colab-df-spinner');\n",
              "          quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
              "        }\n",
              "        (() => {\n",
              "          let quickchartButtonEl =\n",
              "            document.querySelector('#df-23b8952d-049d-4244-b2d0-1c3e5258a500 button');\n",
              "          quickchartButtonEl.style.display =\n",
              "            google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "        })();\n",
              "      </script>\n",
              "    </div>\n",
              "\n",
              "    </div>\n",
              "  </div>\n"
            ],
            "text/plain": [
              "                                              review  \\\n",
              "0  Remove yourself from the Kirk Douglass aspects...   \n",
              "1  Surprising that Jules Verne would write such a...   \n",
              "2  The Light At The Edge of the World marks Kirk ...   \n",
              "3  it is a quite slow pace face-to-face Brynner/D...   \n",
              "4  Jules Verne wrote about 80 novels as well as p...   \n",
              "\n",
              "                                            keywords  \n",
              "0  Here are the keywords extracted from the text:...  \n",
              "1  Here are the keywords extracted from the text:...  \n",
              "2  Here's a list of keywords extracted from the t...  \n",
              "3  Here are the keywords extracted from the text:...  \n",
              "4  Here's a list of keywords extracted from the t...  "
            ]
          },
          "execution_count": 7,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "%%bigquery --project {PROJECT_ID}\n",
        "\n",
        "SELECT\n",
        "  review,\n",
        "  AI.GENERATE(('Extract the keywords from the text below: ', review),\n",
        "    connection_id => 'us.test_connection',\n",
        "    endpoint => 'gemini-2.5-flash',\n",
        "    model_params => JSON '{\"generationConfig\":{\"temperature\": 0.5, \"maxOutputTokens\": 1000, \"thinking_config\": {\"thinking_budget\": 500}}}'\n",
        "    ).result AS keywords\n",
        "FROM\n",
        "  `bigquery-public-data.imdb.reviews`\n",
        "WHERE movie_id = \"tt0067345\"\n",
        "LIMIT 5\n",
        ";"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "edQ8hdPb1QMm"
      },
      "source": [
        "##### The `output_schema` argument\n",
        "\n",
        "As you can see in the last query, the model's responses were not provided in a standard structure. You can use the **`output_schema`** argument to define the format of the responses.\n",
        "\n",
        "First, you'll specify the output as a string of key words by adding `output_schema => 'keywords ARRAY<STRING>'` to the `AI.GENERATE` request."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "7w-oUv8UimxT"
      },
      "outputs": [
        {
          "data": {
            "application/vnd.jupyter.widget-view+json": {
              "model_id": "8bab967a657a48daaf3b15087f2bc97e",
              "version_major": 2,
              "version_minor": 0
            },
            "text/plain": [
              "Query is running:   0%|          |"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "data": {
            "application/vnd.jupyter.widget-view+json": {
              "model_id": "37faa792f35740d69d2da1a6702345cf",
              "version_major": 2,
              "version_minor": 0
            },
            "text/plain": [
              "Downloading:   0%|          |"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "data": {
            "application/vnd.google.colaboratory.intrinsic+json": {
              "summary": "{\n  \"name\": \"get_ipython()\",\n  \"rows\": 5,\n  \"fields\": [\n    {\n      \"column\": \"review\",\n      \"properties\": {\n        \"dtype\": \"string\",\n        \"num_unique_values\": 5,\n        \"samples\": [\n          \"Remove yourself from the Kirk Douglass aspects of the casting. It is essential to your enjoying the film. There is a beautiful young woman playing double roles - and in the photos from the 1800's, I can't believe how smooth and white her skin is. Also, there is an excellent degrading of the film stock which chills the mind if you like faded greys and yellows as I do. This film is played on TNT from time to time so see it.\",\n          \"Jules Verne wrote about 80 novels as well as plays and short stories in his career. He began writing in 1854 with a short story called \\\"Master Zacharias, or the Clockmaker's Soul\\\". It was the first time he talked of the negative side of progress - the evil that results from some discoveries or inventions when they fall into the wrong hands. This becomes a running theme in his novels: Captain Nemo in TWENTY THOUSAND LEAGUES UNDER THE SEA, or Robur (from ROBUR THE CONQUEROR and it's sequel, THE MASTER OF THE WORLD) are two of his best examples of this them. Kongre, in THE LIGHTHOUSE AT THE EDGE OF THE WORLD, is another.Verne was so prolific that when he died in 1905 he left a dozen unpublished novels and stories that were not fully published until 1910. They include some of his best writing, such as THE BARSAC MISSION (partly written by Verne's son Michael), THE SURVIVORS OF THE \\\"JONATHAN\\\", THE PURSUIT OF THE METEOR, THE DANUBE PILOT. All of these dealt with science, but also dealt with political systems, and economics, for Verne was interested in all the problems facing modern man. THE LIGHTHOUSE AT THE EDGE OF THE WORLD was the last novel that was published in Verne's lifetime. It does not deal with the political questions or economic ones that perplexed him, but seems to go back to his potboiler period, when he was turning out stories for money while considering better stories for later publication. But nothing Verne wrote is without interest. Rereading THE LIGHTHOUSE one sees what the subtle point is in it. It is the study of how the ego of a villain can prevent him from escaping retribution.Kongre (renamed Jonathan Kongre) is one of the last pirates in the world of 1900. He and his gang find a damaged boat and repair it. They sail it across the Pacific, and reach Staten Island, a small island in the Straits of Magellan controlled by Chile. There they find a lighthouse with a crew of three men. They manage to kill two of them, but the third one (named Vasquez - he's from Chile, remember), hides on the island. Kongre and his men decide that they should prepare to leave the island shortly, before the Chilean Naval relief boat returns in three months to pick up the lighthouse crew. But first they will wreck any boat that comes to the passage, and increase their ill-gotten gains. But the key to the novel (and it is not in the movie) is that Kongre's right hand men (Carcante and Vargas) keep urging him to pack up his supplies and wealth and head to Asia where the money can be divvied up and everyone separate in safety. And each time Kongre won't do it. Initially it is pure greed. He wrecks a boat, and massacres the crew (a scene that is done in the film). The sole survivor is an American, John Davis (the name became Denton in the film, except that it was given to the character of Vasquez). Now with an ally (and not a drunken one, as in the film), Vasquez starts sabotaging Kongre's activities on the island. Carcante keeps suggesting leaving, but Kongre (unused to someone annoying him successfully) keeps delaying in order to catch Vasquez and Davis. The end result is that when he thinks he has them cornered, the Chilean boat appears to sink his craft, kill most of his crew, and confront him. Kongre commits suicide to avoid capture.Much of the mayhem of the movie (with Denton picking off crew members one at a time) is not in the book. Nor is there any female character in the novel (a rarity in most of Verne's stories - he could be quite a feminist when he wished). The egotism of \\\"Jonathan\\\" Kongre is well shown by Yul Brynner's performance, but the subtlety of that trait is lost. The writers presumably did not think the audience could appreciate it. Kirk Douglas does well enough as Denton, but his singlehanded success (Vasquez and Davis work together well to the end of the story, unlike Denton's ally who is killed by the pirates) seems unlikely. The bestiality of the pirates is well shown in the movie, particularly a singularly tall actor who in one scene wears women's clothing to particularly unsettling effect. The film is not a bad minor adventure film, but it could have been better if they had stuck to Verne's theme.\",\n          \"Surprising that Jules Verne would write such a story. Even more surprising that Hollywood would produce it. Yul Brynner is unbelievably good as a man freed of all bounds of convention, free to indulge his taste for cruelty and domination. Douglass is an excellent counterpoint, a courageous individual who's chosen simple solitude as a way to deal with the complications and turmoil society had imposed on him. And Samantha Egger's character is the capper, a woman willing to sacrifice far too much for comfort and safety. Inotherwords, everyman. The movie does show its age and is limited by the conventions of time and place and technology of the time. If you're looking for special effects and action as substitutes for thought, look elsewhere.\"\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"keywords\",\n      \"properties\": {\n        \"dtype\": \"object\",\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    }\n  ]\n}",
              "type": "dataframe"
            },
            "text/html": [
              "\n",
              "  <div id=\"df-9eb9fc3c-40ae-4885-a0a4-48ed5a6842d9\" class=\"colab-df-container\">\n",
              "    <div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>review</th>\n",
              "      <th>keywords</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>it is a quite slow pace face-to-face Brynner/D...</td>\n",
              "      <td>[slow pace, Brynner/Douglas, violence, gore, s...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>Remove yourself from the Kirk Douglass aspects...</td>\n",
              "      <td>[Kirk Douglass, casting, film enjoyment, doubl...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>Surprising that Jules Verne would write such a...</td>\n",
              "      <td>[Jules Verne, Hollywood, Yul Brynner, Douglass...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>The Light At The Edge of the World marks Kirk ...</td>\n",
              "      <td>[Kirk Douglas, Jules Verne, The Light At The E...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>Jules Verne wrote about 80 novels as well as p...</td>\n",
              "      <td>[Jules Verne, Novels, Plays, Short stories, Ma...</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>\n",
              "    <div class=\"colab-df-buttons\">\n",
              "\n",
              "  <div class=\"colab-df-container\">\n",
              "    <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-9eb9fc3c-40ae-4885-a0a4-48ed5a6842d9')\"\n",
              "            title=\"Convert this dataframe to an interactive table.\"\n",
              "            style=\"display:none;\">\n",
              "\n",
              "  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
              "    <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
              "  </svg>\n",
              "    </button>\n",
              "\n",
              "  <style>\n",
              "    .colab-df-container {\n",
              "      display:flex;\n",
              "      gap: 12px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert {\n",
              "      background-color: #E8F0FE;\n",
              "      border: none;\n",
              "      border-radius: 50%;\n",
              "      cursor: pointer;\n",
              "      display: none;\n",
              "      fill: #1967D2;\n",
              "      height: 32px;\n",
              "      padding: 0 0 0 0;\n",
              "      width: 32px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert:hover {\n",
              "      background-color: #E2EBFA;\n",
              "      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "      fill: #174EA6;\n",
              "    }\n",
              "\n",
              "    .colab-df-buttons div {\n",
              "      margin-bottom: 4px;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert {\n",
              "      background-color: #3B4455;\n",
              "      fill: #D2E3FC;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert:hover {\n",
              "      background-color: #434B5C;\n",
              "      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
              "      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
              "      fill: #FFFFFF;\n",
              "    }\n",
              "  </style>\n",
              "\n",
              "    <script>\n",
              "      const buttonEl =\n",
              "        document.querySelector('#df-9eb9fc3c-40ae-4885-a0a4-48ed5a6842d9 button.colab-df-convert');\n",
              "      buttonEl.style.display =\n",
              "        google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "\n",
              "      async function convertToInteractive(key) {\n",
              "        const element = document.querySelector('#df-9eb9fc3c-40ae-4885-a0a4-48ed5a6842d9');\n",
              "        const dataTable =\n",
              "          await google.colab.kernel.invokeFunction('convertToInteractive',\n",
              "                                                    [key], {});\n",
              "        if (!dataTable) return;\n",
              "\n",
              "        const docLinkHtml = 'Like what you see? Visit the ' +\n",
              "          '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
              "          + ' to learn more about interactive tables.';\n",
              "        element.innerHTML = '';\n",
              "        dataTable['output_type'] = 'display_data';\n",
              "        await google.colab.output.renderOutput(dataTable, element);\n",
              "        const docLink = document.createElement('div');\n",
              "        docLink.innerHTML = docLinkHtml;\n",
              "        element.appendChild(docLink);\n",
              "      }\n",
              "    </script>\n",
              "  </div>\n",
              "\n",
              "\n",
              "    <div id=\"df-25a07f67-5d88-4cf7-85a2-e2c3750c849f\">\n",
              "      <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-25a07f67-5d88-4cf7-85a2-e2c3750c849f')\"\n",
              "                title=\"Suggest charts\"\n",
              "                style=\"display:none;\">\n",
              "\n",
              "<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
              "     width=\"24px\">\n",
              "    <g>\n",
              "        <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
              "    </g>\n",
              "</svg>\n",
              "      </button>\n",
              "\n",
              "<style>\n",
              "  .colab-df-quickchart {\n",
              "      --bg-color: #E8F0FE;\n",
              "      --fill-color: #1967D2;\n",
              "      --hover-bg-color: #E2EBFA;\n",
              "      --hover-fill-color: #174EA6;\n",
              "      --disabled-fill-color: #AAA;\n",
              "      --disabled-bg-color: #DDD;\n",
              "  }\n",
              "\n",
              "  [theme=dark] .colab-df-quickchart {\n",
              "      --bg-color: #3B4455;\n",
              "      --fill-color: #D2E3FC;\n",
              "      --hover-bg-color: #434B5C;\n",
              "      --hover-fill-color: #FFFFFF;\n",
              "      --disabled-bg-color: #3B4455;\n",
              "      --disabled-fill-color: #666;\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart {\n",
              "    background-color: var(--bg-color);\n",
              "    border: none;\n",
              "    border-radius: 50%;\n",
              "    cursor: pointer;\n",
              "    display: none;\n",
              "    fill: var(--fill-color);\n",
              "    height: 32px;\n",
              "    padding: 0;\n",
              "    width: 32px;\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart:hover {\n",
              "    background-color: var(--hover-bg-color);\n",
              "    box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "    fill: var(--button-hover-fill-color);\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart-complete:disabled,\n",
              "  .colab-df-quickchart-complete:disabled:hover {\n",
              "    background-color: var(--disabled-bg-color);\n",
              "    fill: var(--disabled-fill-color);\n",
              "    box-shadow: none;\n",
              "  }\n",
              "\n",
              "  .colab-df-spinner {\n",
              "    border: 2px solid var(--fill-color);\n",
              "    border-color: transparent;\n",
              "    border-bottom-color: var(--fill-color);\n",
              "    animation:\n",
              "      spin 1s steps(1) infinite;\n",
              "  }\n",
              "\n",
              "  @keyframes spin {\n",
              "    0% {\n",
              "      border-color: transparent;\n",
              "      border-bottom-color: var(--fill-color);\n",
              "      border-left-color: var(--fill-color);\n",
              "    }\n",
              "    20% {\n",
              "      border-color: transparent;\n",
              "      border-left-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "    }\n",
              "    30% {\n",
              "      border-color: transparent;\n",
              "      border-left-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "      border-right-color: var(--fill-color);\n",
              "    }\n",
              "    40% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "    }\n",
              "    60% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "    }\n",
              "    80% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "      border-bottom-color: var(--fill-color);\n",
              "    }\n",
              "    90% {\n",
              "      border-color: transparent;\n",
              "      border-bottom-color: var(--fill-color);\n",
              "    }\n",
              "  }\n",
              "</style>\n",
              "\n",
              "      <script>\n",
              "        async function quickchart(key) {\n",
              "          const quickchartButtonEl =\n",
              "            document.querySelector('#' + key + ' button');\n",
              "          quickchartButtonEl.disabled = true;  // To prevent multiple clicks.\n",
              "          quickchartButtonEl.classList.add('colab-df-spinner');\n",
              "          try {\n",
              "            const charts = await google.colab.kernel.invokeFunction(\n",
              "                'suggestCharts', [key], {});\n",
              "          } catch (error) {\n",
              "            console.error('Error during call to suggestCharts:', error);\n",
              "          }\n",
              "          quickchartButtonEl.classList.remove('colab-df-spinner');\n",
              "          quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
              "        }\n",
              "        (() => {\n",
              "          let quickchartButtonEl =\n",
              "            document.querySelector('#df-25a07f67-5d88-4cf7-85a2-e2c3750c849f button');\n",
              "          quickchartButtonEl.style.display =\n",
              "            google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "        })();\n",
              "      </script>\n",
              "    </div>\n",
              "\n",
              "    </div>\n",
              "  </div>\n"
            ],
            "text/plain": [
              "                                              review  \\\n",
              "0  it is a quite slow pace face-to-face Brynner/D...   \n",
              "1  Remove yourself from the Kirk Douglass aspects...   \n",
              "2  Surprising that Jules Verne would write such a...   \n",
              "3  The Light At The Edge of the World marks Kirk ...   \n",
              "4  Jules Verne wrote about 80 novels as well as p...   \n",
              "\n",
              "                                            keywords  \n",
              "0  [slow pace, Brynner/Douglas, violence, gore, s...  \n",
              "1  [Kirk Douglass, casting, film enjoyment, doubl...  \n",
              "2  [Jules Verne, Hollywood, Yul Brynner, Douglass...  \n",
              "3  [Kirk Douglas, Jules Verne, The Light At The E...  \n",
              "4  [Jules Verne, Novels, Plays, Short stories, Ma...  "
            ]
          },
          "execution_count": 8,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "%%bigquery --project {PROJECT_ID}\n",
        "\n",
        "SELECT\n",
        "  review,\n",
        "  AI.GENERATE(\n",
        "    ('Extract the keywords from the text below: ', review),\n",
        "    connection_id => 'us.test_connection',\n",
        "    endpoint => 'gemini-2.5-flash',\n",
        "    output_schema => 'keywords ARRAY<STRING>').keywords\n",
        "FROM\n",
        "  `bigquery-public-data.imdb.reviews`\n",
        "WHERE movie_id = \"tt0067345\"\n",
        "LIMIT 5\n",
        ";"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "AoF8XxEa1HsW"
      },
      "source": [
        "Now the responses are now arrays of keywords - a more useful format for this use case!\n",
        "\n",
        "Next, you'll adjust the prompt to the model to extract the sentiment as well, and adjust the `output_schema` accordingly."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "f1wfmGVZkA1x"
      },
      "outputs": [
        {
          "data": {
            "application/vnd.jupyter.widget-view+json": {
              "model_id": "597622848edd4f84b52e59fc04761527",
              "version_major": 2,
              "version_minor": 0
            },
            "text/plain": [
              "Query is running:   0%|          |"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "data": {
            "application/vnd.jupyter.widget-view+json": {
              "model_id": "7f606a426da24fbc9f340d61e9cc8fd0",
              "version_major": 2,
              "version_minor": 0
            },
            "text/plain": [
              "Downloading:   0%|          |"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "data": {
            "application/vnd.google.colaboratory.intrinsic+json": {
              "summary": "{\n  \"name\": \"get_ipython()\",\n  \"rows\": 5,\n  \"fields\": [\n    {\n      \"column\": \"review\",\n      \"properties\": {\n        \"dtype\": \"string\",\n        \"num_unique_values\": 5,\n        \"samples\": [\n          \"it is a quite slow pace face-to-face Brynner/Douglas...i found there was some pretty heavy violence/gore but you know, seventies giallo style : (maybe some spoiler ahead) a little bit phony and fake but the image is there : the monkey torn apart, the flesh torn from the mechanic, etc...i don't remember if it is alike the novel...but overall i think it is a OK action flick, hero flick : he stands all alone at the end, all the bad guys are out..........and nice images too : a small rocky island, the sun over the seabut not a typical Verne's story-on-cinema : subs, sci-fi; but the adventure seen in a lot of Verne's novels tough\",\n          \"Jules Verne wrote about 80 novels as well as plays and short stories in his career. He began writing in 1854 with a short story called \\\"Master Zacharias, or the Clockmaker's Soul\\\". It was the first time he talked of the negative side of progress - the evil that results from some discoveries or inventions when they fall into the wrong hands. This becomes a running theme in his novels: Captain Nemo in TWENTY THOUSAND LEAGUES UNDER THE SEA, or Robur (from ROBUR THE CONQUEROR and it's sequel, THE MASTER OF THE WORLD) are two of his best examples of this them. Kongre, in THE LIGHTHOUSE AT THE EDGE OF THE WORLD, is another.Verne was so prolific that when he died in 1905 he left a dozen unpublished novels and stories that were not fully published until 1910. They include some of his best writing, such as THE BARSAC MISSION (partly written by Verne's son Michael), THE SURVIVORS OF THE \\\"JONATHAN\\\", THE PURSUIT OF THE METEOR, THE DANUBE PILOT. All of these dealt with science, but also dealt with political systems, and economics, for Verne was interested in all the problems facing modern man. THE LIGHTHOUSE AT THE EDGE OF THE WORLD was the last novel that was published in Verne's lifetime. It does not deal with the political questions or economic ones that perplexed him, but seems to go back to his potboiler period, when he was turning out stories for money while considering better stories for later publication. But nothing Verne wrote is without interest. Rereading THE LIGHTHOUSE one sees what the subtle point is in it. It is the study of how the ego of a villain can prevent him from escaping retribution.Kongre (renamed Jonathan Kongre) is one of the last pirates in the world of 1900. He and his gang find a damaged boat and repair it. They sail it across the Pacific, and reach Staten Island, a small island in the Straits of Magellan controlled by Chile. There they find a lighthouse with a crew of three men. They manage to kill two of them, but the third one (named Vasquez - he's from Chile, remember), hides on the island. Kongre and his men decide that they should prepare to leave the island shortly, before the Chilean Naval relief boat returns in three months to pick up the lighthouse crew. But first they will wreck any boat that comes to the passage, and increase their ill-gotten gains. But the key to the novel (and it is not in the movie) is that Kongre's right hand men (Carcante and Vargas) keep urging him to pack up his supplies and wealth and head to Asia where the money can be divvied up and everyone separate in safety. And each time Kongre won't do it. Initially it is pure greed. He wrecks a boat, and massacres the crew (a scene that is done in the film). The sole survivor is an American, John Davis (the name became Denton in the film, except that it was given to the character of Vasquez). Now with an ally (and not a drunken one, as in the film), Vasquez starts sabotaging Kongre's activities on the island. Carcante keeps suggesting leaving, but Kongre (unused to someone annoying him successfully) keeps delaying in order to catch Vasquez and Davis. The end result is that when he thinks he has them cornered, the Chilean boat appears to sink his craft, kill most of his crew, and confront him. Kongre commits suicide to avoid capture.Much of the mayhem of the movie (with Denton picking off crew members one at a time) is not in the book. Nor is there any female character in the novel (a rarity in most of Verne's stories - he could be quite a feminist when he wished). The egotism of \\\"Jonathan\\\" Kongre is well shown by Yul Brynner's performance, but the subtlety of that trait is lost. The writers presumably did not think the audience could appreciate it. Kirk Douglas does well enough as Denton, but his singlehanded success (Vasquez and Davis work together well to the end of the story, unlike Denton's ally who is killed by the pirates) seems unlikely. The bestiality of the pirates is well shown in the movie, particularly a singularly tall actor who in one scene wears women's clothing to particularly unsettling effect. The film is not a bad minor adventure film, but it could have been better if they had stuck to Verne's theme.\",\n          \"Remove yourself from the Kirk Douglass aspects of the casting. It is essential to your enjoying the film. There is a beautiful young woman playing double roles - and in the photos from the 1800's, I can't believe how smooth and white her skin is. Also, there is an excellent degrading of the film stock which chills the mind if you like faded greys and yellows as I do. This film is played on TNT from time to time so see it.\"\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"full_response\",\n      \"properties\": {\n        \"dtype\": \"string\",\n        \"num_unique_values\": 5,\n        \"samples\": [\n          \"{\\\"candidates\\\":[{\\\"avg_logprobs\\\":-1.1881528455157613,\\\"content\\\":{\\\"parts\\\":[{\\\"text\\\":\\\"{\\\\\\\"keywords\\\\\\\": [\\\\\\\"slow pace\\\\\\\", \\\\\\\"Brynner Douglas\\\\\\\", \\\\\\\"heavy violence\\\\\\\", \\\\\\\"gore\\\\\\\", \\\\\\\"seventies giallo style\\\\\\\", \\\\\\\"phony\\\\\\\", \\\\\\\"fake\\\\\\\", \\\\\\\"monkey torn apart\\\\\\\", \\\\\\\"flesh torn\\\\\\\", \\\\\\\"mechanic\\\\\\\", \\\\\\\"OK action flick\\\\\\\", \\\\\\\"hero flick\\\\\\\", \\\\\\\"rocky island\\\\\\\", \\\\\\\"sun over the sea\\\\\\\", \\\\\\\"Verne's story\\\\\\\", \\\\\\\"adventure\\\\\\\", \\\\\\\"Verne's novels\\\\\\\"], \\\\\\\"sentiment\\\\\\\": \\\\\\\"Neutral\\\\\\\"}\\\"}],\\\"role\\\":\\\"model\\\"},\\\"finish_reason\\\":\\\"STOP\\\",\\\"score\\\":-102.18114471435547}],\\\"create_time\\\":\\\"2025-08-06T22:38:31.455140Z\\\",\\\"model_version\\\":\\\"gemini-2.5-flash\\\",\\\"response_id\\\":\\\"Z9mTaOTjG42RsbQPt6uuyAI\\\",\\\"usage_metadata\\\":{\\\"billable_prompt_usage\\\":{\\\"text_count\\\":622},\\\"candidates_token_count\\\":86,\\\"candidates_tokens_details\\\":[{\\\"modality\\\":\\\"TEXT\\\",\\\"token_count\\\":86}],\\\"prompt_token_count\\\":179,\\\"prompt_tokens_details\\\":[{\\\"modality\\\":\\\"TEXT\\\",\\\"token_count\\\":179}],\\\"thoughts_token_count\\\":330,\\\"total_token_count\\\":595,\\\"traffic_type\\\":\\\"ON_DEMAND\\\"}}\",\n          \"{\\\"candidates\\\":[{\\\"avg_logprobs\\\":-1.273380105265506,\\\"citation_metadata\\\":{\\\"citations\\\":[{\\\"end_index\\\":1849,\\\"start_index\\\":1427,\\\"uri\\\":\\\"https://ytsss.jamsbase.com/movies/the-light-at-the-edge-of-the-world-1971\\\"},{\\\"end_index\\\":2386,\\\"start_index\\\":1977,\\\"uri\\\":\\\"https://ytsss.jamsbase.com/movies/the-light-at-the-edge-of-the-world-1971\\\"}]},\\\"content\\\":{\\\"parts\\\":[{\\\"text\\\":\\\"{\\\\n  \\\\\\\"keywords\\\\\\\": [\\\\n    \\\\\\\"Jules Verne\\\\\\\",\\\\n    \\\\\\\"Master Zacharias\\\\\\\",\\\\n    \\\\\\\"negative side of progress\\\\\\\",\\\\n    \\\\\\\"Captain Nemo\\\\\\\",\\\\n    \\\\\\\"Twenty Thousand Leagues Under the Sea\\\\\\\",\\\\n    \\\\\\\"Robur the Conqueror\\\\\\\",\\\\n    \\\\\\\"The Master of the World\\\\\\\",\\\\n    \\\\\\\"Kongre\\\\\\\",\\\\n    \\\\\\\"The Lighthouse at the Edge of the World\\\\\\\",\\\\n    \\\\\\\"The Barsac Mission\\\\\\\",\\\\n    \\\\\\\"The Survivors of the \\\\\\\\\\\\\\\"Jonathan\\\\\\\\\\\\\\\"\\\\\\\",\\\\n    \\\\\\\"The Pursuit of the Meteor\\\\\\\",\\\\n    \\\\\\\"The Danube Pilot\\\\\\\",\\\\n    \\\\\\\"science fiction\\\\\\\",\\\\n    \\\\\\\"political systems\\\\\\\",\\\\n    \\\\\\\"economics\\\\\\\",\\\\n    \\\\\\\"villain's ego\\\\\\\",\\\\n    \\\\\\\"pirates\\\\\\\",\\\\n    \\\\\\\"Staten Island\\\\\\\",\\\\n    \\\\\\\"Vasquez\\\\\\\",\\\\n    \\\\\\\"film adaptation\\\\\\\",\\\\n    \\\\\\\"Yul Brynner\\\\\\\",\\\\n    \\\\\\\"Kirk Douglas\\\\\\\",\\\\n    \\\\\\\"book vs film\\\\\\\"\\\\n  ],\\\\n  \\\\\\\"sentiment\\\\\\\": \\\\\\\"Neutral\\\\\\\"\\\\n}\\\"}],\\\"role\\\":\\\"model\\\"},\\\"finish_reason\\\":\\\"STOP\\\",\\\"score\\\":-250.8558807373047}],\\\"create_time\\\":\\\"2025-08-06T22:38:31.362686Z\\\",\\\"model_version\\\":\\\"gemini-2.5-flash\\\",\\\"response_id\\\":\\\"Z9mTaL6RFpiAqsMP5-PlqAI\\\",\\\"usage_metadata\\\":{\\\"billable_prompt_usage\\\":{\\\"text_count\\\":3544},\\\"candidates_token_count\\\":197,\\\"candidates_tokens_details\\\":[{\\\"modality\\\":\\\"TEXT\\\",\\\"token_count\\\":197}],\\\"prompt_token_count\\\":974,\\\"prompt_tokens_details\\\":[{\\\"modality\\\":\\\"TEXT\\\",\\\"token_count\\\":974}],\\\"thoughts_token_count\\\":1022,\\\"total_token_count\\\":2193,\\\"traffic_type\\\":\\\"ON_DEMAND\\\"}}\",\n          \"{\\\"candidates\\\":[{\\\"avg_logprobs\\\":-5.274520263671875,\\\"content\\\":{\\\"parts\\\":[{\\\"text\\\":\\\"{\\\\\\\"keywords\\\\\\\":[\\\\\\\"casting\\\\\\\",\\\\\\\"double roles\\\\\\\",\\\\\\\"skin appearance\\\\\\\",\\\\\\\"film stock\\\\\\\",\\\\\\\"visual aesthetic\\\\\\\",\\\\\\\"TNT broadcast\\\\\\\"],\\\\\\\"sentiment\\\\\\\":\\\\\\\"Positive\\\\\\\"}\\\"}],\\\"role\\\":\\\"model\\\"},\\\"finish_reason\\\":\\\"STOP\\\",\\\"score\\\":-131.86300659179688}],\\\"create_time\\\":\\\"2025-08-06T22:38:32.494515Z\\\",\\\"model_version\\\":\\\"gemini-2.5-flash\\\",\\\"response_id\\\":\\\"aNmTaLOXHpiAqsMP5-PlqAI\\\",\\\"usage_metadata\\\":{\\\"billable_prompt_usage\\\":{\\\"text_count\\\":447},\\\"candidates_token_count\\\":25,\\\"candidates_tokens_details\\\":[{\\\"modality\\\":\\\"TEXT\\\",\\\"token_count\\\":25}],\\\"prompt_token_count\\\":123,\\\"prompt_tokens_details\\\":[{\\\"modality\\\":\\\"TEXT\\\",\\\"token_count\\\":123}],\\\"thoughts_token_count\\\":408,\\\"total_token_count\\\":556,\\\"traffic_type\\\":\\\"ON_DEMAND\\\"}}\"\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    }\n  ]\n}",
              "type": "dataframe"
            },
            "text/html": [
              "\n",
              "  <div id=\"df-30b19a2b-0211-4266-ac9a-d60462da4551\" class=\"colab-df-container\">\n",
              "    <div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>review</th>\n",
              "      <th>full_response</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>The Light At The Edge of the World marks Kirk ...</td>\n",
              "      <td>{\"candidates\":[{\"avg_logprobs\":-0.776785824749...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>it is a quite slow pace face-to-face Brynner/D...</td>\n",
              "      <td>{\"candidates\":[{\"avg_logprobs\":-1.188152845515...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>Remove yourself from the Kirk Douglass aspects...</td>\n",
              "      <td>{\"candidates\":[{\"avg_logprobs\":-5.274520263671...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>Surprising that Jules Verne would write such a...</td>\n",
              "      <td>{\"candidates\":[{\"avg_logprobs\":-3.319361877441...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>Jules Verne wrote about 80 novels as well as p...</td>\n",
              "      <td>{\"candidates\":[{\"avg_logprobs\":-1.273380105265...</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>\n",
              "    <div class=\"colab-df-buttons\">\n",
              "\n",
              "  <div class=\"colab-df-container\">\n",
              "    <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-30b19a2b-0211-4266-ac9a-d60462da4551')\"\n",
              "            title=\"Convert this dataframe to an interactive table.\"\n",
              "            style=\"display:none;\">\n",
              "\n",
              "  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
              "    <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
              "  </svg>\n",
              "    </button>\n",
              "\n",
              "  <style>\n",
              "    .colab-df-container {\n",
              "      display:flex;\n",
              "      gap: 12px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert {\n",
              "      background-color: #E8F0FE;\n",
              "      border: none;\n",
              "      border-radius: 50%;\n",
              "      cursor: pointer;\n",
              "      display: none;\n",
              "      fill: #1967D2;\n",
              "      height: 32px;\n",
              "      padding: 0 0 0 0;\n",
              "      width: 32px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert:hover {\n",
              "      background-color: #E2EBFA;\n",
              "      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "      fill: #174EA6;\n",
              "    }\n",
              "\n",
              "    .colab-df-buttons div {\n",
              "      margin-bottom: 4px;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert {\n",
              "      background-color: #3B4455;\n",
              "      fill: #D2E3FC;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert:hover {\n",
              "      background-color: #434B5C;\n",
              "      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
              "      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
              "      fill: #FFFFFF;\n",
              "    }\n",
              "  </style>\n",
              "\n",
              "    <script>\n",
              "      const buttonEl =\n",
              "        document.querySelector('#df-30b19a2b-0211-4266-ac9a-d60462da4551 button.colab-df-convert');\n",
              "      buttonEl.style.display =\n",
              "        google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "\n",
              "      async function convertToInteractive(key) {\n",
              "        const element = document.querySelector('#df-30b19a2b-0211-4266-ac9a-d60462da4551');\n",
              "        const dataTable =\n",
              "          await google.colab.kernel.invokeFunction('convertToInteractive',\n",
              "                                                    [key], {});\n",
              "        if (!dataTable) return;\n",
              "\n",
              "        const docLinkHtml = 'Like what you see? Visit the ' +\n",
              "          '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
              "          + ' to learn more about interactive tables.';\n",
              "        element.innerHTML = '';\n",
              "        dataTable['output_type'] = 'display_data';\n",
              "        await google.colab.output.renderOutput(dataTable, element);\n",
              "        const docLink = document.createElement('div');\n",
              "        docLink.innerHTML = docLinkHtml;\n",
              "        element.appendChild(docLink);\n",
              "      }\n",
              "    </script>\n",
              "  </div>\n",
              "\n",
              "\n",
              "    <div id=\"df-a2581028-b818-4afe-b145-4a48908b1eff\">\n",
              "      <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-a2581028-b818-4afe-b145-4a48908b1eff')\"\n",
              "                title=\"Suggest charts\"\n",
              "                style=\"display:none;\">\n",
              "\n",
              "<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
              "     width=\"24px\">\n",
              "    <g>\n",
              "        <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
              "    </g>\n",
              "</svg>\n",
              "      </button>\n",
              "\n",
              "<style>\n",
              "  .colab-df-quickchart {\n",
              "      --bg-color: #E8F0FE;\n",
              "      --fill-color: #1967D2;\n",
              "      --hover-bg-color: #E2EBFA;\n",
              "      --hover-fill-color: #174EA6;\n",
              "      --disabled-fill-color: #AAA;\n",
              "      --disabled-bg-color: #DDD;\n",
              "  }\n",
              "\n",
              "  [theme=dark] .colab-df-quickchart {\n",
              "      --bg-color: #3B4455;\n",
              "      --fill-color: #D2E3FC;\n",
              "      --hover-bg-color: #434B5C;\n",
              "      --hover-fill-color: #FFFFFF;\n",
              "      --disabled-bg-color: #3B4455;\n",
              "      --disabled-fill-color: #666;\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart {\n",
              "    background-color: var(--bg-color);\n",
              "    border: none;\n",
              "    border-radius: 50%;\n",
              "    cursor: pointer;\n",
              "    display: none;\n",
              "    fill: var(--fill-color);\n",
              "    height: 32px;\n",
              "    padding: 0;\n",
              "    width: 32px;\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart:hover {\n",
              "    background-color: var(--hover-bg-color);\n",
              "    box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "    fill: var(--button-hover-fill-color);\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart-complete:disabled,\n",
              "  .colab-df-quickchart-complete:disabled:hover {\n",
              "    background-color: var(--disabled-bg-color);\n",
              "    fill: var(--disabled-fill-color);\n",
              "    box-shadow: none;\n",
              "  }\n",
              "\n",
              "  .colab-df-spinner {\n",
              "    border: 2px solid var(--fill-color);\n",
              "    border-color: transparent;\n",
              "    border-bottom-color: var(--fill-color);\n",
              "    animation:\n",
              "      spin 1s steps(1) infinite;\n",
              "  }\n",
              "\n",
              "  @keyframes spin {\n",
              "    0% {\n",
              "      border-color: transparent;\n",
              "      border-bottom-color: var(--fill-color);\n",
              "      border-left-color: var(--fill-color);\n",
              "    }\n",
              "    20% {\n",
              "      border-color: transparent;\n",
              "      border-left-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "    }\n",
              "    30% {\n",
              "      border-color: transparent;\n",
              "      border-left-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "      border-right-color: var(--fill-color);\n",
              "    }\n",
              "    40% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "    }\n",
              "    60% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "    }\n",
              "    80% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "      border-bottom-color: var(--fill-color);\n",
              "    }\n",
              "    90% {\n",
              "      border-color: transparent;\n",
              "      border-bottom-color: var(--fill-color);\n",
              "    }\n",
              "  }\n",
              "</style>\n",
              "\n",
              "      <script>\n",
              "        async function quickchart(key) {\n",
              "          const quickchartButtonEl =\n",
              "            document.querySelector('#' + key + ' button');\n",
              "          quickchartButtonEl.disabled = true;  // To prevent multiple clicks.\n",
              "          quickchartButtonEl.classList.add('colab-df-spinner');\n",
              "          try {\n",
              "            const charts = await google.colab.kernel.invokeFunction(\n",
              "                'suggestCharts', [key], {});\n",
              "          } catch (error) {\n",
              "            console.error('Error during call to suggestCharts:', error);\n",
              "          }\n",
              "          quickchartButtonEl.classList.remove('colab-df-spinner');\n",
              "          quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
              "        }\n",
              "        (() => {\n",
              "          let quickchartButtonEl =\n",
              "            document.querySelector('#df-a2581028-b818-4afe-b145-4a48908b1eff button');\n",
              "          quickchartButtonEl.style.display =\n",
              "            google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "        })();\n",
              "      </script>\n",
              "    </div>\n",
              "\n",
              "    </div>\n",
              "  </div>\n"
            ],
            "text/plain": [
              "                                              review  \\\n",
              "0  The Light At The Edge of the World marks Kirk ...   \n",
              "1  it is a quite slow pace face-to-face Brynner/D...   \n",
              "2  Remove yourself from the Kirk Douglass aspects...   \n",
              "3  Surprising that Jules Verne would write such a...   \n",
              "4  Jules Verne wrote about 80 novels as well as p...   \n",
              "\n",
              "                                       full_response  \n",
              "0  {\"candidates\":[{\"avg_logprobs\":-0.776785824749...  \n",
              "1  {\"candidates\":[{\"avg_logprobs\":-1.188152845515...  \n",
              "2  {\"candidates\":[{\"avg_logprobs\":-5.274520263671...  \n",
              "3  {\"candidates\":[{\"avg_logprobs\":-3.319361877441...  \n",
              "4  {\"candidates\":[{\"avg_logprobs\":-1.273380105265...  "
            ]
          },
          "execution_count": 9,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "%%bigquery --project {PROJECT_ID}\n",
        "\n",
        "SELECT\n",
        "  review,\n",
        "  AI.GENERATE(\n",
        "    ('Extract the keywords and sentiment (Positive, Negative, or Neutral) from the following review: ', review),\n",
        "    connection_id => 'us.test_connection',\n",
        "    endpoint => 'gemini-2.5-flash',\n",
        "    output_schema => 'keywords ARRAY<STRING>, sentiment STRING').full_response\n",
        "FROM\n",
        "  `bigquery-public-data.imdb.reviews`\n",
        "WHERE movie_id = \"tt0067345\"\n",
        "LIMIT 5\n",
        ";"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "KmpYd5Dg2AJy"
      },
      "source": [
        "This time, the response is in a JSON format. Why?\n",
        "\n",
        "When using `output_schema` with [`AI.GENERATE`](https://cloud.google.com/bigquery/docs/reference/standard-sql/bigqueryml-syntax-ai-generate), you can specify in the SQL which field you want to return. In this case the SQL specifies the `.full_response` which will provide a JSON object containing the various text response elements. You may alternatively specify to return any one of the schema columns you defined, such as `.keywords` (as was used in the first query of this section) or `.sentiment`. However, you cannot specify to return multiple columns.\n",
        "\n",
        " You could use SQL to parse the JSON provided in the `.full_response`,  but for ease of use, let's look at the [`AI.GENERATE_TABLE`](https://cloud.google.com/bigquery/docs/reference/standard-sql/bigqueryml-syntax-generate-table) function."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "generate_table_md"
      },
      "source": [
        "### Using `AI.GENERATE_TABLE`: Extract keywords and sentiment from movie reviews\n",
        "\n",
        "The [`AI.GENERATE_TABLE`](https://cloud.google.com/bigquery/docs/reference/standard-sql/bigqueryml-syntax-generate-table) function provides expanded functionality for turning unstructured text into a structured table. Here, you'll perform the same analysis to extract keywords and overall sentiment from the `bigquery-public-data.imdb_reviews` table and return the response as multiple columns in one query."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "prepare_md"
      },
      "source": [
        "#### Create a BigQuery Dataset\n",
        "\n",
        "The syntax for using [`AI.GENERATE_TABLE`](https://cloud.google.com/bigquery/docs/reference/standard-sql/bigqueryml-syntax-generate-table) differs from [`AI.GENERATE`](https://cloud.google.com/bigquery/docs/reference/standard-sql/bigqueryml-syntax-ai-generate), and it requires that you first create a remote model in BigQuery that connects to the one of the [generally available](https://cloud.google.com/vertex-ai/generative-ai/docs/models#generally_available_models) or [preview](https://cloud.google.com/vertex-ai/generative-ai/docs/models#preview_models) Gemini models.\n",
        "\n",
        "Running the following query will create a BigQuery dataset called **`bq_ai_tutorial`** to house the remote model:"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "create_dataset_code"
      },
      "outputs": [],
      "source": [
        "%%bigquery --project {PROJECT_ID}\n",
        "\n",
        "CREATE SCHEMA\n",
        "  `bq_ai_tutorial` OPTIONS (location = 'US');"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "create_model_md"
      },
      "source": [
        "#### Create a remote model for Gemini 2.5 Flash\n",
        "\n",
        "Now you'll create the remote model, which is simply a pointer to the model endpoint. In this example, you'll continue to use the `gemini-2.5-flash` model endpoint.\n",
        "\n",
        "Once you create this remote model, it is saved in your `bq_ai_tutorial` dataset so that you can use it in any future analysis."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "create_model_code"
      },
      "outputs": [],
      "source": [
        "%%bigquery --project {PROJECT_ID}\n",
        "\n",
        "CREATE OR REPLACE MODEL\n",
        "  `bq_ai_tutorial.gemini_2_5_flash`\n",
        "REMOTE WITH\n",
        "    CONNECTION `us.test_connection`\n",
        "    OPTIONS (ENDPOINT = 'gemini-2.5-flash');\n"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "SBiwwjzhendG"
      },
      "source": [
        "#### Run analysis using the remote model"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "CmVE4UxdnoqB"
      },
      "source": [
        "Now that the remote model has been created, you can prompt it with [`AI.GENERATE_TABLE`](https://cloud.google.com/bigquery/docs/reference/standard-sql/bigqueryml-syntax-generate-table) to analyze data and specify the output schema with multiple columns returned."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "generate_table_code"
      },
      "outputs": [
        {
          "data": {
            "application/vnd.jupyter.widget-view+json": {
              "model_id": "cbaef7082532489d9d1bebecf5bb89b2",
              "version_major": 2,
              "version_minor": 0
            },
            "text/plain": [
              "Query is running:   0%|          |"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "data": {
            "application/vnd.jupyter.widget-view+json": {
              "model_id": "282757f370ea4d45abda7ed969cac0bf",
              "version_major": 2,
              "version_minor": 0
            },
            "text/plain": [
              "Downloading:   0%|          |"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "data": {
            "application/vnd.google.colaboratory.intrinsic+json": {
              "summary": "{\n  \"name\": \"get_ipython()\",\n  \"rows\": 5,\n  \"fields\": [\n    {\n      \"column\": \"review\",\n      \"properties\": {\n        \"dtype\": \"string\",\n        \"num_unique_values\": 5,\n        \"samples\": [\n          \"it is a quite slow pace face-to-face Brynner/Douglas...i found there was some pretty heavy violence/gore but you know, seventies giallo style : (maybe some spoiler ahead) a little bit phony and fake but the image is there : the monkey torn apart, the flesh torn from the mechanic, etc...i don't remember if it is alike the novel...but overall i think it is a OK action flick, hero flick : he stands all alone at the end, all the bad guys are out..........and nice images too : a small rocky island, the sun over the seabut not a typical Verne's story-on-cinema : subs, sci-fi; but the adventure seen in a lot of Verne's novels tough\",\n          \"Jules Verne wrote about 80 novels as well as plays and short stories in his career. He began writing in 1854 with a short story called \\\"Master Zacharias, or the Clockmaker's Soul\\\". It was the first time he talked of the negative side of progress - the evil that results from some discoveries or inventions when they fall into the wrong hands. This becomes a running theme in his novels: Captain Nemo in TWENTY THOUSAND LEAGUES UNDER THE SEA, or Robur (from ROBUR THE CONQUEROR and it's sequel, THE MASTER OF THE WORLD) are two of his best examples of this them. Kongre, in THE LIGHTHOUSE AT THE EDGE OF THE WORLD, is another.Verne was so prolific that when he died in 1905 he left a dozen unpublished novels and stories that were not fully published until 1910. They include some of his best writing, such as THE BARSAC MISSION (partly written by Verne's son Michael), THE SURVIVORS OF THE \\\"JONATHAN\\\", THE PURSUIT OF THE METEOR, THE DANUBE PILOT. All of these dealt with science, but also dealt with political systems, and economics, for Verne was interested in all the problems facing modern man. THE LIGHTHOUSE AT THE EDGE OF THE WORLD was the last novel that was published in Verne's lifetime. It does not deal with the political questions or economic ones that perplexed him, but seems to go back to his potboiler period, when he was turning out stories for money while considering better stories for later publication. But nothing Verne wrote is without interest. Rereading THE LIGHTHOUSE one sees what the subtle point is in it. It is the study of how the ego of a villain can prevent him from escaping retribution.Kongre (renamed Jonathan Kongre) is one of the last pirates in the world of 1900. He and his gang find a damaged boat and repair it. They sail it across the Pacific, and reach Staten Island, a small island in the Straits of Magellan controlled by Chile. There they find a lighthouse with a crew of three men. They manage to kill two of them, but the third one (named Vasquez - he's from Chile, remember), hides on the island. Kongre and his men decide that they should prepare to leave the island shortly, before the Chilean Naval relief boat returns in three months to pick up the lighthouse crew. But first they will wreck any boat that comes to the passage, and increase their ill-gotten gains. But the key to the novel (and it is not in the movie) is that Kongre's right hand men (Carcante and Vargas) keep urging him to pack up his supplies and wealth and head to Asia where the money can be divvied up and everyone separate in safety. And each time Kongre won't do it. Initially it is pure greed. He wrecks a boat, and massacres the crew (a scene that is done in the film). The sole survivor is an American, John Davis (the name became Denton in the film, except that it was given to the character of Vasquez). Now with an ally (and not a drunken one, as in the film), Vasquez starts sabotaging Kongre's activities on the island. Carcante keeps suggesting leaving, but Kongre (unused to someone annoying him successfully) keeps delaying in order to catch Vasquez and Davis. The end result is that when he thinks he has them cornered, the Chilean boat appears to sink his craft, kill most of his crew, and confront him. Kongre commits suicide to avoid capture.Much of the mayhem of the movie (with Denton picking off crew members one at a time) is not in the book. Nor is there any female character in the novel (a rarity in most of Verne's stories - he could be quite a feminist when he wished). The egotism of \\\"Jonathan\\\" Kongre is well shown by Yul Brynner's performance, but the subtlety of that trait is lost. The writers presumably did not think the audience could appreciate it. Kirk Douglas does well enough as Denton, but his singlehanded success (Vasquez and Davis work together well to the end of the story, unlike Denton's ally who is killed by the pirates) seems unlikely. The bestiality of the pirates is well shown in the movie, particularly a singularly tall actor who in one scene wears women's clothing to particularly unsettling effect. The film is not a bad minor adventure film, but it could have been better if they had stuck to Verne's theme.\",\n          \"Remove yourself from the Kirk Douglass aspects of the casting. It is essential to your enjoying the film. There is a beautiful young woman playing double roles - and in the photos from the 1800's, I can't believe how smooth and white her skin is. Also, there is an excellent degrading of the film stock which chills the mind if you like faded greys and yellows as I do. This film is played on TNT from time to time so see it.\"\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"keywords\",\n      \"properties\": {\n        \"dtype\": \"object\",\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"sentiment\",\n      \"properties\": {\n        \"dtype\": \"category\",\n        \"num_unique_values\": 2,\n        \"samples\": [\n          \"Neutral\",\n          \"Positive\"\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    }\n  ]\n}",
              "type": "dataframe"
            },
            "text/html": [
              "\n",
              "  <div id=\"df-c9cdd681-9614-4d67-8a6a-59224d4be6fa\" class=\"colab-df-container\">\n",
              "    <div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>review</th>\n",
              "      <th>keywords</th>\n",
              "      <th>sentiment</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>The Light At The Edge of the World marks Kirk ...</td>\n",
              "      <td>[Kirk Douglas, Jules Verne, The Light At The E...</td>\n",
              "      <td>Positive</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>it is a quite slow pace face-to-face Brynner/D...</td>\n",
              "      <td>[slow pace, face-to-face, Brynner/Douglas, hea...</td>\n",
              "      <td>Neutral</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>Remove yourself from the Kirk Douglass aspects...</td>\n",
              "      <td>[Kirk Douglass casting, beautiful young woman,...</td>\n",
              "      <td>Positive</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>Surprising that Jules Verne would write such a...</td>\n",
              "      <td>[Jules Verne, Hollywood, Yul Brynner, Douglass...</td>\n",
              "      <td>Positive</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>Jules Verne wrote about 80 novels as well as p...</td>\n",
              "      <td>[Jules Verne, novels, Master Zacharias, or the...</td>\n",
              "      <td>Neutral</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>\n",
              "    <div class=\"colab-df-buttons\">\n",
              "\n",
              "  <div class=\"colab-df-container\">\n",
              "    <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-c9cdd681-9614-4d67-8a6a-59224d4be6fa')\"\n",
              "            title=\"Convert this dataframe to an interactive table.\"\n",
              "            style=\"display:none;\">\n",
              "\n",
              "  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
              "    <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
              "  </svg>\n",
              "    </button>\n",
              "\n",
              "  <style>\n",
              "    .colab-df-container {\n",
              "      display:flex;\n",
              "      gap: 12px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert {\n",
              "      background-color: #E8F0FE;\n",
              "      border: none;\n",
              "      border-radius: 50%;\n",
              "      cursor: pointer;\n",
              "      display: none;\n",
              "      fill: #1967D2;\n",
              "      height: 32px;\n",
              "      padding: 0 0 0 0;\n",
              "      width: 32px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert:hover {\n",
              "      background-color: #E2EBFA;\n",
              "      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "      fill: #174EA6;\n",
              "    }\n",
              "\n",
              "    .colab-df-buttons div {\n",
              "      margin-bottom: 4px;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert {\n",
              "      background-color: #3B4455;\n",
              "      fill: #D2E3FC;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert:hover {\n",
              "      background-color: #434B5C;\n",
              "      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
              "      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
              "      fill: #FFFFFF;\n",
              "    }\n",
              "  </style>\n",
              "\n",
              "    <script>\n",
              "      const buttonEl =\n",
              "        document.querySelector('#df-c9cdd681-9614-4d67-8a6a-59224d4be6fa button.colab-df-convert');\n",
              "      buttonEl.style.display =\n",
              "        google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "\n",
              "      async function convertToInteractive(key) {\n",
              "        const element = document.querySelector('#df-c9cdd681-9614-4d67-8a6a-59224d4be6fa');\n",
              "        const dataTable =\n",
              "          await google.colab.kernel.invokeFunction('convertToInteractive',\n",
              "                                                    [key], {});\n",
              "        if (!dataTable) return;\n",
              "\n",
              "        const docLinkHtml = 'Like what you see? Visit the ' +\n",
              "          '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
              "          + ' to learn more about interactive tables.';\n",
              "        element.innerHTML = '';\n",
              "        dataTable['output_type'] = 'display_data';\n",
              "        await google.colab.output.renderOutput(dataTable, element);\n",
              "        const docLink = document.createElement('div');\n",
              "        docLink.innerHTML = docLinkHtml;\n",
              "        element.appendChild(docLink);\n",
              "      }\n",
              "    </script>\n",
              "  </div>\n",
              "\n",
              "\n",
              "    <div id=\"df-2cc8ed98-ffe1-4dcd-b41c-beac950cc13f\">\n",
              "      <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-2cc8ed98-ffe1-4dcd-b41c-beac950cc13f')\"\n",
              "                title=\"Suggest charts\"\n",
              "                style=\"display:none;\">\n",
              "\n",
              "<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
              "     width=\"24px\">\n",
              "    <g>\n",
              "        <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
              "    </g>\n",
              "</svg>\n",
              "      </button>\n",
              "\n",
              "<style>\n",
              "  .colab-df-quickchart {\n",
              "      --bg-color: #E8F0FE;\n",
              "      --fill-color: #1967D2;\n",
              "      --hover-bg-color: #E2EBFA;\n",
              "      --hover-fill-color: #174EA6;\n",
              "      --disabled-fill-color: #AAA;\n",
              "      --disabled-bg-color: #DDD;\n",
              "  }\n",
              "\n",
              "  [theme=dark] .colab-df-quickchart {\n",
              "      --bg-color: #3B4455;\n",
              "      --fill-color: #D2E3FC;\n",
              "      --hover-bg-color: #434B5C;\n",
              "      --hover-fill-color: #FFFFFF;\n",
              "      --disabled-bg-color: #3B4455;\n",
              "      --disabled-fill-color: #666;\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart {\n",
              "    background-color: var(--bg-color);\n",
              "    border: none;\n",
              "    border-radius: 50%;\n",
              "    cursor: pointer;\n",
              "    display: none;\n",
              "    fill: var(--fill-color);\n",
              "    height: 32px;\n",
              "    padding: 0;\n",
              "    width: 32px;\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart:hover {\n",
              "    background-color: var(--hover-bg-color);\n",
              "    box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "    fill: var(--button-hover-fill-color);\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart-complete:disabled,\n",
              "  .colab-df-quickchart-complete:disabled:hover {\n",
              "    background-color: var(--disabled-bg-color);\n",
              "    fill: var(--disabled-fill-color);\n",
              "    box-shadow: none;\n",
              "  }\n",
              "\n",
              "  .colab-df-spinner {\n",
              "    border: 2px solid var(--fill-color);\n",
              "    border-color: transparent;\n",
              "    border-bottom-color: var(--fill-color);\n",
              "    animation:\n",
              "      spin 1s steps(1) infinite;\n",
              "  }\n",
              "\n",
              "  @keyframes spin {\n",
              "    0% {\n",
              "      border-color: transparent;\n",
              "      border-bottom-color: var(--fill-color);\n",
              "      border-left-color: var(--fill-color);\n",
              "    }\n",
              "    20% {\n",
              "      border-color: transparent;\n",
              "      border-left-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "    }\n",
              "    30% {\n",
              "      border-color: transparent;\n",
              "      border-left-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "      border-right-color: var(--fill-color);\n",
              "    }\n",
              "    40% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "    }\n",
              "    60% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "    }\n",
              "    80% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "      border-bottom-color: var(--fill-color);\n",
              "    }\n",
              "    90% {\n",
              "      border-color: transparent;\n",
              "      border-bottom-color: var(--fill-color);\n",
              "    }\n",
              "  }\n",
              "</style>\n",
              "\n",
              "      <script>\n",
              "        async function quickchart(key) {\n",
              "          const quickchartButtonEl =\n",
              "            document.querySelector('#' + key + ' button');\n",
              "          quickchartButtonEl.disabled = true;  // To prevent multiple clicks.\n",
              "          quickchartButtonEl.classList.add('colab-df-spinner');\n",
              "          try {\n",
              "            const charts = await google.colab.kernel.invokeFunction(\n",
              "                'suggestCharts', [key], {});\n",
              "          } catch (error) {\n",
              "            console.error('Error during call to suggestCharts:', error);\n",
              "          }\n",
              "          quickchartButtonEl.classList.remove('colab-df-spinner');\n",
              "          quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
              "        }\n",
              "        (() => {\n",
              "          let quickchartButtonEl =\n",
              "            document.querySelector('#df-2cc8ed98-ffe1-4dcd-b41c-beac950cc13f button');\n",
              "          quickchartButtonEl.style.display =\n",
              "            google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "        })();\n",
              "      </script>\n",
              "    </div>\n",
              "\n",
              "    </div>\n",
              "  </div>\n"
            ],
            "text/plain": [
              "                                              review  \\\n",
              "0  The Light At The Edge of the World marks Kirk ...   \n",
              "1  it is a quite slow pace face-to-face Brynner/D...   \n",
              "2  Remove yourself from the Kirk Douglass aspects...   \n",
              "3  Surprising that Jules Verne would write such a...   \n",
              "4  Jules Verne wrote about 80 novels as well as p...   \n",
              "\n",
              "                                            keywords sentiment  \n",
              "0  [Kirk Douglas, Jules Verne, The Light At The E...  Positive  \n",
              "1  [slow pace, face-to-face, Brynner/Douglas, hea...   Neutral  \n",
              "2  [Kirk Douglass casting, beautiful young woman,...  Positive  \n",
              "3  [Jules Verne, Hollywood, Yul Brynner, Douglass...  Positive  \n",
              "4  [Jules Verne, novels, Master Zacharias, or the...   Neutral  "
            ]
          },
          "execution_count": 11,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "%%bigquery --project {PROJECT_ID}\n",
        "\n",
        "SELECT\n",
        "  review,\n",
        "  keywords,\n",
        "  sentiment\n",
        "FROM\n",
        "  AI.GENERATE_TABLE(\n",
        "    MODEL `bq_ai_tutorial.gemini_2_5_flash`,\n",
        "    (\n",
        "      SELECT\n",
        "        review,\n",
        "        ('Extract the keywords and sentiment (Positive, Negative, or Neutral) from the following review:',review) AS prompt,\n",
        "      FROM\n",
        "        `bigquery-public-data.imdb.reviews`\n",
        "      WHERE movie_id = \"tt0067345\"\n",
        "      LIMIT 5\n",
        "    ),\n",
        "    STRUCT(\n",
        "      'keywords ARRAY<STRING>, sentiment STRING' AS output_schema\n",
        "    )\n",
        "  );"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "WkdFwoOp1cRm"
      },
      "source": [
        "#### Saving results in a BigQuery table\n",
        "Wrapping any `SELECT` statement with the [`CREATE TABLE` statement](https://cloud.google.com/bigquery/docs/reference/standard-sql/data-definition-language#create_table_statement) allows you to create a permanent table from your query results. You can run the next two queries to see that in action."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "I0yvijK71Zbm"
      },
      "outputs": [],
      "source": [
        "%%bigquery --project {PROJECT_ID}\n",
        "\n",
        "CREATE OR REPLACE TABLE `bq_ai_tutorial.reviews_keywords_sentiment` AS (\n",
        "  SELECT\n",
        "    review,\n",
        "    keywords,\n",
        "    sentiment\n",
        "  FROM\n",
        "    AI.GENERATE_TABLE(\n",
        "      MODEL `bq_ai_tutorial.gemini_2_5_flash`,\n",
        "      (\n",
        "        SELECT\n",
        "          review,\n",
        "          ('Extract the keywords and sentiment (Positive, Negative, or Neutral) from the following review:',review) AS prompt,\n",
        "        FROM\n",
        "          `bigquery-public-data.imdb.reviews`\n",
        "        WHERE movie_id = \"tt0067345\"\n",
        "        LIMIT 5\n",
        "      ),\n",
        "      STRUCT(\n",
        "        'keywords ARRAY<STRING>, sentiment STRING' AS output_schema)));"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "JW88rus93d9D"
      },
      "outputs": [
        {
          "data": {
            "application/vnd.jupyter.widget-view+json": {
              "model_id": "c53a940d704b4329ac242ae745e9e8b7",
              "version_major": 2,
              "version_minor": 0
            },
            "text/plain": [
              "Query is running:   0%|          |"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "data": {
            "application/vnd.jupyter.widget-view+json": {
              "model_id": "317154ab2287468db463d64b9e886f4d",
              "version_major": 2,
              "version_minor": 0
            },
            "text/plain": [
              "Downloading:   0%|          |"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "data": {
            "application/vnd.google.colaboratory.intrinsic+json": {
              "summary": "{\n  \"name\": \"get_ipython()\",\n  \"rows\": 5,\n  \"fields\": [\n    {\n      \"column\": \"review\",\n      \"properties\": {\n        \"dtype\": \"string\",\n        \"num_unique_values\": 5,\n        \"samples\": [\n          \"Surprising that Jules Verne would write such a story. Even more surprising that Hollywood would produce it. Yul Brynner is unbelievably good as a man freed of all bounds of convention, free to indulge his taste for cruelty and domination. Douglass is an excellent counterpoint, a courageous individual who's chosen simple solitude as a way to deal with the complications and turmoil society had imposed on him. And Samantha Egger's character is the capper, a woman willing to sacrifice far too much for comfort and safety. Inotherwords, everyman. The movie does show its age and is limited by the conventions of time and place and technology of the time. If you're looking for special effects and action as substitutes for thought, look elsewhere.\",\n          \"Remove yourself from the Kirk Douglass aspects of the casting. It is essential to your enjoying the film. There is a beautiful young woman playing double roles - and in the photos from the 1800's, I can't believe how smooth and white her skin is. Also, there is an excellent degrading of the film stock which chills the mind if you like faded greys and yellows as I do. This film is played on TNT from time to time so see it.\",\n          \"it is a quite slow pace face-to-face Brynner/Douglas...i found there was some pretty heavy violence/gore but you know, seventies giallo style : (maybe some spoiler ahead) a little bit phony and fake but the image is there : the monkey torn apart, the flesh torn from the mechanic, etc...i don't remember if it is alike the novel...but overall i think it is a OK action flick, hero flick : he stands all alone at the end, all the bad guys are out..........and nice images too : a small rocky island, the sun over the seabut not a typical Verne's story-on-cinema : subs, sci-fi; but the adventure seen in a lot of Verne's novels tough\"\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"keywords\",\n      \"properties\": {\n        \"dtype\": \"object\",\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"sentiment\",\n      \"properties\": {\n        \"dtype\": \"category\",\n        \"num_unique_values\": 2,\n        \"samples\": [\n          \"Positive\",\n          \"Neutral\"\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    }\n  ]\n}",
              "type": "dataframe"
            },
            "text/html": [
              "\n",
              "  <div id=\"df-dfb9bd6c-1bbf-400b-8a1e-b31a439253ff\" class=\"colab-df-container\">\n",
              "    <div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>review</th>\n",
              "      <th>keywords</th>\n",
              "      <th>sentiment</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>Jules Verne wrote about 80 novels as well as p...</td>\n",
              "      <td>[Jules Verne, novels, The Lighthouse at the Ed...</td>\n",
              "      <td>Neutral</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>Surprising that Jules Verne would write such a...</td>\n",
              "      <td>[Jules Verne, Yul Brynner, Douglass, Samantha ...</td>\n",
              "      <td>Neutral</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>it is a quite slow pace face-to-face Brynner/D...</td>\n",
              "      <td>[slow pace, violence, gore, giallo style, acti...</td>\n",
              "      <td>Neutral</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>The Light At The Edge of the World marks Kirk ...</td>\n",
              "      <td>[The Light At The Edge of the World, Kirk Doug...</td>\n",
              "      <td>Positive</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>Remove yourself from the Kirk Douglass aspects...</td>\n",
              "      <td>[film, casting, actress, visuals, film stock, ...</td>\n",
              "      <td>Positive</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>\n",
              "    <div class=\"colab-df-buttons\">\n",
              "\n",
              "  <div class=\"colab-df-container\">\n",
              "    <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-dfb9bd6c-1bbf-400b-8a1e-b31a439253ff')\"\n",
              "            title=\"Convert this dataframe to an interactive table.\"\n",
              "            style=\"display:none;\">\n",
              "\n",
              "  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
              "    <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
              "  </svg>\n",
              "    </button>\n",
              "\n",
              "  <style>\n",
              "    .colab-df-container {\n",
              "      display:flex;\n",
              "      gap: 12px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert {\n",
              "      background-color: #E8F0FE;\n",
              "      border: none;\n",
              "      border-radius: 50%;\n",
              "      cursor: pointer;\n",
              "      display: none;\n",
              "      fill: #1967D2;\n",
              "      height: 32px;\n",
              "      padding: 0 0 0 0;\n",
              "      width: 32px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert:hover {\n",
              "      background-color: #E2EBFA;\n",
              "      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "      fill: #174EA6;\n",
              "    }\n",
              "\n",
              "    .colab-df-buttons div {\n",
              "      margin-bottom: 4px;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert {\n",
              "      background-color: #3B4455;\n",
              "      fill: #D2E3FC;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert:hover {\n",
              "      background-color: #434B5C;\n",
              "      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
              "      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
              "      fill: #FFFFFF;\n",
              "    }\n",
              "  </style>\n",
              "\n",
              "    <script>\n",
              "      const buttonEl =\n",
              "        document.querySelector('#df-dfb9bd6c-1bbf-400b-8a1e-b31a439253ff button.colab-df-convert');\n",
              "      buttonEl.style.display =\n",
              "        google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "\n",
              "      async function convertToInteractive(key) {\n",
              "        const element = document.querySelector('#df-dfb9bd6c-1bbf-400b-8a1e-b31a439253ff');\n",
              "        const dataTable =\n",
              "          await google.colab.kernel.invokeFunction('convertToInteractive',\n",
              "                                                    [key], {});\n",
              "        if (!dataTable) return;\n",
              "\n",
              "        const docLinkHtml = 'Like what you see? Visit the ' +\n",
              "          '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
              "          + ' to learn more about interactive tables.';\n",
              "        element.innerHTML = '';\n",
              "        dataTable['output_type'] = 'display_data';\n",
              "        await google.colab.output.renderOutput(dataTable, element);\n",
              "        const docLink = document.createElement('div');\n",
              "        docLink.innerHTML = docLinkHtml;\n",
              "        element.appendChild(docLink);\n",
              "      }\n",
              "    </script>\n",
              "  </div>\n",
              "\n",
              "\n",
              "    <div id=\"df-2d728310-b5f9-4fee-9f24-fa832347b927\">\n",
              "      <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-2d728310-b5f9-4fee-9f24-fa832347b927')\"\n",
              "                title=\"Suggest charts\"\n",
              "                style=\"display:none;\">\n",
              "\n",
              "<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
              "     width=\"24px\">\n",
              "    <g>\n",
              "        <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
              "    </g>\n",
              "</svg>\n",
              "      </button>\n",
              "\n",
              "<style>\n",
              "  .colab-df-quickchart {\n",
              "      --bg-color: #E8F0FE;\n",
              "      --fill-color: #1967D2;\n",
              "      --hover-bg-color: #E2EBFA;\n",
              "      --hover-fill-color: #174EA6;\n",
              "      --disabled-fill-color: #AAA;\n",
              "      --disabled-bg-color: #DDD;\n",
              "  }\n",
              "\n",
              "  [theme=dark] .colab-df-quickchart {\n",
              "      --bg-color: #3B4455;\n",
              "      --fill-color: #D2E3FC;\n",
              "      --hover-bg-color: #434B5C;\n",
              "      --hover-fill-color: #FFFFFF;\n",
              "      --disabled-bg-color: #3B4455;\n",
              "      --disabled-fill-color: #666;\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart {\n",
              "    background-color: var(--bg-color);\n",
              "    border: none;\n",
              "    border-radius: 50%;\n",
              "    cursor: pointer;\n",
              "    display: none;\n",
              "    fill: var(--fill-color);\n",
              "    height: 32px;\n",
              "    padding: 0;\n",
              "    width: 32px;\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart:hover {\n",
              "    background-color: var(--hover-bg-color);\n",
              "    box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "    fill: var(--button-hover-fill-color);\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart-complete:disabled,\n",
              "  .colab-df-quickchart-complete:disabled:hover {\n",
              "    background-color: var(--disabled-bg-color);\n",
              "    fill: var(--disabled-fill-color);\n",
              "    box-shadow: none;\n",
              "  }\n",
              "\n",
              "  .colab-df-spinner {\n",
              "    border: 2px solid var(--fill-color);\n",
              "    border-color: transparent;\n",
              "    border-bottom-color: var(--fill-color);\n",
              "    animation:\n",
              "      spin 1s steps(1) infinite;\n",
              "  }\n",
              "\n",
              "  @keyframes spin {\n",
              "    0% {\n",
              "      border-color: transparent;\n",
              "      border-bottom-color: var(--fill-color);\n",
              "      border-left-color: var(--fill-color);\n",
              "    }\n",
              "    20% {\n",
              "      border-color: transparent;\n",
              "      border-left-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "    }\n",
              "    30% {\n",
              "      border-color: transparent;\n",
              "      border-left-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "      border-right-color: var(--fill-color);\n",
              "    }\n",
              "    40% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "    }\n",
              "    60% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "    }\n",
              "    80% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "      border-bottom-color: var(--fill-color);\n",
              "    }\n",
              "    90% {\n",
              "      border-color: transparent;\n",
              "      border-bottom-color: var(--fill-color);\n",
              "    }\n",
              "  }\n",
              "</style>\n",
              "\n",
              "      <script>\n",
              "        async function quickchart(key) {\n",
              "          const quickchartButtonEl =\n",
              "            document.querySelector('#' + key + ' button');\n",
              "          quickchartButtonEl.disabled = true;  // To prevent multiple clicks.\n",
              "          quickchartButtonEl.classList.add('colab-df-spinner');\n",
              "          try {\n",
              "            const charts = await google.colab.kernel.invokeFunction(\n",
              "                'suggestCharts', [key], {});\n",
              "          } catch (error) {\n",
              "            console.error('Error during call to suggestCharts:', error);\n",
              "          }\n",
              "          quickchartButtonEl.classList.remove('colab-df-spinner');\n",
              "          quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
              "        }\n",
              "        (() => {\n",
              "          let quickchartButtonEl =\n",
              "            document.querySelector('#df-2d728310-b5f9-4fee-9f24-fa832347b927 button');\n",
              "          quickchartButtonEl.style.display =\n",
              "            google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "        })();\n",
              "      </script>\n",
              "    </div>\n",
              "\n",
              "    </div>\n",
              "  </div>\n"
            ],
            "text/plain": [
              "                                              review  \\\n",
              "0  Jules Verne wrote about 80 novels as well as p...   \n",
              "1  Surprising that Jules Verne would write such a...   \n",
              "2  it is a quite slow pace face-to-face Brynner/D...   \n",
              "3  The Light At The Edge of the World marks Kirk ...   \n",
              "4  Remove yourself from the Kirk Douglass aspects...   \n",
              "\n",
              "                                            keywords sentiment  \n",
              "0  [Jules Verne, novels, The Lighthouse at the Ed...   Neutral  \n",
              "1  [Jules Verne, Yul Brynner, Douglass, Samantha ...   Neutral  \n",
              "2  [slow pace, violence, gore, giallo style, acti...   Neutral  \n",
              "3  [The Light At The Edge of the World, Kirk Doug...  Positive  \n",
              "4  [film, casting, actress, visuals, film stock, ...  Positive  "
            ]
          },
          "execution_count": 13,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "%%bigquery --project {PROJECT_ID}\n",
        "\n",
        "SELECT *\n",
        "FROM `bq_ai_tutorial.reviews_keywords_sentiment`"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "T0Hz06RiecoI"
      },
      "source": [
        "#### Using arguments to adjust model configuration\n",
        "Similar to `AI.GENERATE`, [`AI.GENERATE_TABLE`](https://cloud.google.com/bigquery/docs/reference/standard-sql/bigqueryml-syntax-generate-table) also allows you to customize the parameters for your generation request. The placement of these parameters is within the `STRUCT` value. The [documentation page](https://cloud.google.com/bigquery/docs/reference/standard-sql/bigqueryml-syntax-generate-table#:~:text=dataset.table%60%20%7C%20(query_statement)%20%7D%2C-,STRUCT(,-output_schema%20AS%20output_schema) contains the available fields you can define within the `STRUCT`.\n",
        "\n",
        "Next you'll take the same query and now define values for `temperature` and `max_output_tokens`."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "SyGREvkxeXzh"
      },
      "outputs": [
        {
          "data": {
            "application/vnd.jupyter.widget-view+json": {
              "model_id": "a98918f4e45d44beb48f384c0a746e78",
              "version_major": 2,
              "version_minor": 0
            },
            "text/plain": [
              "Query is running:   0%|          |"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "data": {
            "application/vnd.jupyter.widget-view+json": {
              "model_id": "b049b918937349c8a61aa7f8f4cbf6ba",
              "version_major": 2,
              "version_minor": 0
            },
            "text/plain": [
              "Downloading:   0%|          |"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "data": {
            "application/vnd.google.colaboratory.intrinsic+json": {
              "summary": "{\n  \"name\": \"get_ipython()\",\n  \"rows\": 5,\n  \"fields\": [\n    {\n      \"column\": \"review\",\n      \"properties\": {\n        \"dtype\": \"string\",\n        \"num_unique_values\": 5,\n        \"samples\": [\n          \"Remove yourself from the Kirk Douglass aspects of the casting. It is essential to your enjoying the film. There is a beautiful young woman playing double roles - and in the photos from the 1800's, I can't believe how smooth and white her skin is. Also, there is an excellent degrading of the film stock which chills the mind if you like faded greys and yellows as I do. This film is played on TNT from time to time so see it.\",\n          \"Jules Verne wrote about 80 novels as well as plays and short stories in his career. He began writing in 1854 with a short story called \\\"Master Zacharias, or the Clockmaker's Soul\\\". It was the first time he talked of the negative side of progress - the evil that results from some discoveries or inventions when they fall into the wrong hands. This becomes a running theme in his novels: Captain Nemo in TWENTY THOUSAND LEAGUES UNDER THE SEA, or Robur (from ROBUR THE CONQUEROR and it's sequel, THE MASTER OF THE WORLD) are two of his best examples of this them. Kongre, in THE LIGHTHOUSE AT THE EDGE OF THE WORLD, is another.Verne was so prolific that when he died in 1905 he left a dozen unpublished novels and stories that were not fully published until 1910. They include some of his best writing, such as THE BARSAC MISSION (partly written by Verne's son Michael), THE SURVIVORS OF THE \\\"JONATHAN\\\", THE PURSUIT OF THE METEOR, THE DANUBE PILOT. All of these dealt with science, but also dealt with political systems, and economics, for Verne was interested in all the problems facing modern man. THE LIGHTHOUSE AT THE EDGE OF THE WORLD was the last novel that was published in Verne's lifetime. It does not deal with the political questions or economic ones that perplexed him, but seems to go back to his potboiler period, when he was turning out stories for money while considering better stories for later publication. But nothing Verne wrote is without interest. Rereading THE LIGHTHOUSE one sees what the subtle point is in it. It is the study of how the ego of a villain can prevent him from escaping retribution.Kongre (renamed Jonathan Kongre) is one of the last pirates in the world of 1900. He and his gang find a damaged boat and repair it. They sail it across the Pacific, and reach Staten Island, a small island in the Straits of Magellan controlled by Chile. There they find a lighthouse with a crew of three men. They manage to kill two of them, but the third one (named Vasquez - he's from Chile, remember), hides on the island. Kongre and his men decide that they should prepare to leave the island shortly, before the Chilean Naval relief boat returns in three months to pick up the lighthouse crew. But first they will wreck any boat that comes to the passage, and increase their ill-gotten gains. But the key to the novel (and it is not in the movie) is that Kongre's right hand men (Carcante and Vargas) keep urging him to pack up his supplies and wealth and head to Asia where the money can be divvied up and everyone separate in safety. And each time Kongre won't do it. Initially it is pure greed. He wrecks a boat, and massacres the crew (a scene that is done in the film). The sole survivor is an American, John Davis (the name became Denton in the film, except that it was given to the character of Vasquez). Now with an ally (and not a drunken one, as in the film), Vasquez starts sabotaging Kongre's activities on the island. Carcante keeps suggesting leaving, but Kongre (unused to someone annoying him successfully) keeps delaying in order to catch Vasquez and Davis. The end result is that when he thinks he has them cornered, the Chilean boat appears to sink his craft, kill most of his crew, and confront him. Kongre commits suicide to avoid capture.Much of the mayhem of the movie (with Denton picking off crew members one at a time) is not in the book. Nor is there any female character in the novel (a rarity in most of Verne's stories - he could be quite a feminist when he wished). The egotism of \\\"Jonathan\\\" Kongre is well shown by Yul Brynner's performance, but the subtlety of that trait is lost. The writers presumably did not think the audience could appreciate it. Kirk Douglas does well enough as Denton, but his singlehanded success (Vasquez and Davis work together well to the end of the story, unlike Denton's ally who is killed by the pirates) seems unlikely. The bestiality of the pirates is well shown in the movie, particularly a singularly tall actor who in one scene wears women's clothing to particularly unsettling effect. The film is not a bad minor adventure film, but it could have been better if they had stuck to Verne's theme.\",\n          \"Surprising that Jules Verne would write such a story. Even more surprising that Hollywood would produce it. Yul Brynner is unbelievably good as a man freed of all bounds of convention, free to indulge his taste for cruelty and domination. Douglass is an excellent counterpoint, a courageous individual who's chosen simple solitude as a way to deal with the complications and turmoil society had imposed on him. And Samantha Egger's character is the capper, a woman willing to sacrifice far too much for comfort and safety. Inotherwords, everyman. The movie does show its age and is limited by the conventions of time and place and technology of the time. If you're looking for special effects and action as substitutes for thought, look elsewhere.\"\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"keywords\",\n      \"properties\": {\n        \"dtype\": \"object\",\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"sentiment\",\n      \"properties\": {\n        \"dtype\": \"category\",\n        \"num_unique_values\": 2,\n        \"samples\": [\n          \"Neutral\",\n          \"Positive\"\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    }\n  ]\n}",
              "type": "dataframe"
            },
            "text/html": [
              "\n",
              "  <div id=\"df-d237bd77-4c6f-4601-8ece-bb1c39680e70\" class=\"colab-df-container\">\n",
              "    <div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>review</th>\n",
              "      <th>keywords</th>\n",
              "      <th>sentiment</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>The Light At The Edge of the World marks Kirk ...</td>\n",
              "      <td>[Kirk Douglas, Jules Verne, The Light At The E...</td>\n",
              "      <td>Positive</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>Remove yourself from the Kirk Douglass aspects...</td>\n",
              "      <td>[Kirk Douglass casting, enjoying the film, bea...</td>\n",
              "      <td>Positive</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>Surprising that Jules Verne would write such a...</td>\n",
              "      <td>[Jules Verne, Yul Brynner, Douglass, Samantha ...</td>\n",
              "      <td>Positive</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>it is a quite slow pace face-to-face Brynner/D...</td>\n",
              "      <td>[slow pace, Brynner/Douglas, heavy violence, g...</td>\n",
              "      <td>Neutral</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>Jules Verne wrote about 80 novels as well as p...</td>\n",
              "      <td>[Jules Verne, novels, The Lighthouse at the Ed...</td>\n",
              "      <td>Neutral</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>\n",
              "    <div class=\"colab-df-buttons\">\n",
              "\n",
              "  <div class=\"colab-df-container\">\n",
              "    <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-d237bd77-4c6f-4601-8ece-bb1c39680e70')\"\n",
              "            title=\"Convert this dataframe to an interactive table.\"\n",
              "            style=\"display:none;\">\n",
              "\n",
              "  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
              "    <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
              "  </svg>\n",
              "    </button>\n",
              "\n",
              "  <style>\n",
              "    .colab-df-container {\n",
              "      display:flex;\n",
              "      gap: 12px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert {\n",
              "      background-color: #E8F0FE;\n",
              "      border: none;\n",
              "      border-radius: 50%;\n",
              "      cursor: pointer;\n",
              "      display: none;\n",
              "      fill: #1967D2;\n",
              "      height: 32px;\n",
              "      padding: 0 0 0 0;\n",
              "      width: 32px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert:hover {\n",
              "      background-color: #E2EBFA;\n",
              "      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "      fill: #174EA6;\n",
              "    }\n",
              "\n",
              "    .colab-df-buttons div {\n",
              "      margin-bottom: 4px;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert {\n",
              "      background-color: #3B4455;\n",
              "      fill: #D2E3FC;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert:hover {\n",
              "      background-color: #434B5C;\n",
              "      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
              "      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
              "      fill: #FFFFFF;\n",
              "    }\n",
              "  </style>\n",
              "\n",
              "    <script>\n",
              "      const buttonEl =\n",
              "        document.querySelector('#df-d237bd77-4c6f-4601-8ece-bb1c39680e70 button.colab-df-convert');\n",
              "      buttonEl.style.display =\n",
              "        google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "\n",
              "      async function convertToInteractive(key) {\n",
              "        const element = document.querySelector('#df-d237bd77-4c6f-4601-8ece-bb1c39680e70');\n",
              "        const dataTable =\n",
              "          await google.colab.kernel.invokeFunction('convertToInteractive',\n",
              "                                                    [key], {});\n",
              "        if (!dataTable) return;\n",
              "\n",
              "        const docLinkHtml = 'Like what you see? Visit the ' +\n",
              "          '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
              "          + ' to learn more about interactive tables.';\n",
              "        element.innerHTML = '';\n",
              "        dataTable['output_type'] = 'display_data';\n",
              "        await google.colab.output.renderOutput(dataTable, element);\n",
              "        const docLink = document.createElement('div');\n",
              "        docLink.innerHTML = docLinkHtml;\n",
              "        element.appendChild(docLink);\n",
              "      }\n",
              "    </script>\n",
              "  </div>\n",
              "\n",
              "\n",
              "    <div id=\"df-b7a4f9bc-a250-48bb-9156-0aee35e0c3cf\">\n",
              "      <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-b7a4f9bc-a250-48bb-9156-0aee35e0c3cf')\"\n",
              "                title=\"Suggest charts\"\n",
              "                style=\"display:none;\">\n",
              "\n",
              "<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
              "     width=\"24px\">\n",
              "    <g>\n",
              "        <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
              "    </g>\n",
              "</svg>\n",
              "      </button>\n",
              "\n",
              "<style>\n",
              "  .colab-df-quickchart {\n",
              "      --bg-color: #E8F0FE;\n",
              "      --fill-color: #1967D2;\n",
              "      --hover-bg-color: #E2EBFA;\n",
              "      --hover-fill-color: #174EA6;\n",
              "      --disabled-fill-color: #AAA;\n",
              "      --disabled-bg-color: #DDD;\n",
              "  }\n",
              "\n",
              "  [theme=dark] .colab-df-quickchart {\n",
              "      --bg-color: #3B4455;\n",
              "      --fill-color: #D2E3FC;\n",
              "      --hover-bg-color: #434B5C;\n",
              "      --hover-fill-color: #FFFFFF;\n",
              "      --disabled-bg-color: #3B4455;\n",
              "      --disabled-fill-color: #666;\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart {\n",
              "    background-color: var(--bg-color);\n",
              "    border: none;\n",
              "    border-radius: 50%;\n",
              "    cursor: pointer;\n",
              "    display: none;\n",
              "    fill: var(--fill-color);\n",
              "    height: 32px;\n",
              "    padding: 0;\n",
              "    width: 32px;\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart:hover {\n",
              "    background-color: var(--hover-bg-color);\n",
              "    box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "    fill: var(--button-hover-fill-color);\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart-complete:disabled,\n",
              "  .colab-df-quickchart-complete:disabled:hover {\n",
              "    background-color: var(--disabled-bg-color);\n",
              "    fill: var(--disabled-fill-color);\n",
              "    box-shadow: none;\n",
              "  }\n",
              "\n",
              "  .colab-df-spinner {\n",
              "    border: 2px solid var(--fill-color);\n",
              "    border-color: transparent;\n",
              "    border-bottom-color: var(--fill-color);\n",
              "    animation:\n",
              "      spin 1s steps(1) infinite;\n",
              "  }\n",
              "\n",
              "  @keyframes spin {\n",
              "    0% {\n",
              "      border-color: transparent;\n",
              "      border-bottom-color: var(--fill-color);\n",
              "      border-left-color: var(--fill-color);\n",
              "    }\n",
              "    20% {\n",
              "      border-color: transparent;\n",
              "      border-left-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "    }\n",
              "    30% {\n",
              "      border-color: transparent;\n",
              "      border-left-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "      border-right-color: var(--fill-color);\n",
              "    }\n",
              "    40% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "    }\n",
              "    60% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "    }\n",
              "    80% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "      border-bottom-color: var(--fill-color);\n",
              "    }\n",
              "    90% {\n",
              "      border-color: transparent;\n",
              "      border-bottom-color: var(--fill-color);\n",
              "    }\n",
              "  }\n",
              "</style>\n",
              "\n",
              "      <script>\n",
              "        async function quickchart(key) {\n",
              "          const quickchartButtonEl =\n",
              "            document.querySelector('#' + key + ' button');\n",
              "          quickchartButtonEl.disabled = true;  // To prevent multiple clicks.\n",
              "          quickchartButtonEl.classList.add('colab-df-spinner');\n",
              "          try {\n",
              "            const charts = await google.colab.kernel.invokeFunction(\n",
              "                'suggestCharts', [key], {});\n",
              "          } catch (error) {\n",
              "            console.error('Error during call to suggestCharts:', error);\n",
              "          }\n",
              "          quickchartButtonEl.classList.remove('colab-df-spinner');\n",
              "          quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
              "        }\n",
              "        (() => {\n",
              "          let quickchartButtonEl =\n",
              "            document.querySelector('#df-b7a4f9bc-a250-48bb-9156-0aee35e0c3cf button');\n",
              "          quickchartButtonEl.style.display =\n",
              "            google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "        })();\n",
              "      </script>\n",
              "    </div>\n",
              "\n",
              "    </div>\n",
              "  </div>\n"
            ],
            "text/plain": [
              "                                              review  \\\n",
              "0  The Light At The Edge of the World marks Kirk ...   \n",
              "1  Remove yourself from the Kirk Douglass aspects...   \n",
              "2  Surprising that Jules Verne would write such a...   \n",
              "3  it is a quite slow pace face-to-face Brynner/D...   \n",
              "4  Jules Verne wrote about 80 novels as well as p...   \n",
              "\n",
              "                                            keywords sentiment  \n",
              "0  [Kirk Douglas, Jules Verne, The Light At The E...  Positive  \n",
              "1  [Kirk Douglass casting, enjoying the film, bea...  Positive  \n",
              "2  [Jules Verne, Yul Brynner, Douglass, Samantha ...  Positive  \n",
              "3  [slow pace, Brynner/Douglas, heavy violence, g...   Neutral  \n",
              "4  [Jules Verne, novels, The Lighthouse at the Ed...   Neutral  "
            ]
          },
          "execution_count": 14,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "%%bigquery --project {PROJECT_ID}\n",
        "\n",
        "SELECT\n",
        "  review,\n",
        "  keywords,\n",
        "  sentiment\n",
        "FROM\n",
        "  AI.GENERATE_TABLE(\n",
        "    MODEL `bq_ai_tutorial.gemini_2_5_flash`,\n",
        "    (\n",
        "      SELECT\n",
        "        review,\n",
        "        ('Extract the key words and sentiment (Positive, Negative, or Neutral) from the following review:',review) AS prompt,\n",
        "      FROM\n",
        "        `bigquery-public-data.imdb.reviews`\n",
        "      WHERE movie_id = \"tt0067345\"\n",
        "      LIMIT 5\n",
        "    ),\n",
        "    STRUCT(\n",
        "      'keywords ARRAY<STRING>, sentiment STRING' AS output_schema,\n",
        "      0.5 AS temperature,\n",
        "      1000 AS max_output_tokens\n",
        "    )\n",
        "  );"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "tN51GtTMYEoF"
      },
      "source": [
        "## Generate text with partner and open models with `ML.GENERATE_TEXT`\n",
        "\n",
        "The tutorial thus far has performed analysis using the [Gemini family of models](https://cloud.google.com/vertex-ai/generative-ai/docs/models#generally_available_models). However, the generative analysis capabilities of BigQuery extend to several [partner models](https://cloud.google.com/bigquery/docs/generate-text#enable-model), including Anthropic Claude, Llama, and Mistral AI, as well as [open models](https://cloud.google.com/bigquery/docs/generate-text#deploy_an_open_model) from the [Vertex AI Model Garden and Hugging Face](https://cloud.google.com/bigquery/docs/reference/standard-sql/bigqueryml-syntax-create-remote-model-open#supported_open_models).\n",
        "\n",
        "When choosing a partner or open model, you will use the [`ML.GENERATE_TEXT` function](https://cloud.google.com/bigquery/docs/reference/standard-sql/bigqueryml-syntax-generate-text) to perform your analysis. The syntax for the [`ML.GENERATE_TEXT` function](https://cloud.google.com/bigquery/docs/reference/standard-sql/bigqueryml-syntax-generate-text) is similar to `AI.GENERATE_TABLE`. Let's walk through an example analysis using a partner model."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "RB90JcraZrwf"
      },
      "source": [
        "### Enabling a partner model\n",
        "\n",
        "You must enable partner models in Vertex AI before you can use them in BigQuery.\n",
        "\n",
        "**BEFORE MOVING AHEAD**, enable the [**Anthropic Claude 3 Haiku** model](https://console.cloud.google.com/vertex-ai/publishers/anthropic/model-garden/claude-3-haiku) by following the [instructions in the documentation](https://cloud.google.com/bigquery/docs/generate-text#enable-model)."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "plOQu7eIjeEs"
      },
      "source": [
        "### Create a remote model for Anthropic Claude 3 Haiku\n",
        "\n",
        "Now you'll create a new remote model, pointing to the `claude-3-haiku@20240307` model endpoint."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "wrYOI_HGjQT2"
      },
      "outputs": [],
      "source": [
        "%%bigquery --project {PROJECT_ID}\n",
        "\n",
        "CREATE OR REPLACE MODEL\n",
        "  `bq_ai_tutorial.claude_3_haiku`\n",
        "REMOTE WITH\n",
        "    CONNECTION `us.test_connection`\n",
        "    OPTIONS (ENDPOINT = 'claude-3-haiku@20240307');"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "vtJ5nuMbmY0C"
      },
      "source": [
        "### Run analysis using the partner model\n",
        "\n",
        "Now you are ready to use the remote model with an [`ML.GENERATE_TEXT` function](https://cloud.google.com/bigquery/docs/reference/standard-sql/bigqueryml-syntax-generate-text). The following query repeats your previous analysis done to extract key words and sentiment from the reviews, now using Anthropic Claude 3 Haiku."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "HaPTzBYrZnr4"
      },
      "outputs": [
        {
          "data": {
            "application/vnd.jupyter.widget-view+json": {
              "model_id": "459c72b7ca094340bc35d4330a0258bf",
              "version_major": 2,
              "version_minor": 0
            },
            "text/plain": [
              "Query is running:   0%|          |"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "data": {
            "application/vnd.jupyter.widget-view+json": {
              "model_id": "3b30fb2e55d643959f2ba91d2a9a08ee",
              "version_major": 2,
              "version_minor": 0
            },
            "text/plain": [
              "Downloading:   0%|          |"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "data": {
            "application/vnd.google.colaboratory.intrinsic+json": {
              "summary": "{\n  \"name\": \"get_ipython()\",\n  \"rows\": 5,\n  \"fields\": [\n    {\n      \"column\": \"review\",\n      \"properties\": {\n        \"dtype\": \"string\",\n        \"num_unique_values\": 5,\n        \"samples\": [\n          \"Remove yourself from the Kirk Douglass aspects of the casting. It is essential to your enjoying the film. There is a beautiful young woman playing double roles - and in the photos from the 1800's, I can't believe how smooth and white her skin is. Also, there is an excellent degrading of the film stock which chills the mind if you like faded greys and yellows as I do. This film is played on TNT from time to time so see it.\",\n          \"Jules Verne wrote about 80 novels as well as plays and short stories in his career. He began writing in 1854 with a short story called \\\"Master Zacharias, or the Clockmaker's Soul\\\". It was the first time he talked of the negative side of progress - the evil that results from some discoveries or inventions when they fall into the wrong hands. This becomes a running theme in his novels: Captain Nemo in TWENTY THOUSAND LEAGUES UNDER THE SEA, or Robur (from ROBUR THE CONQUEROR and it's sequel, THE MASTER OF THE WORLD) are two of his best examples of this them. Kongre, in THE LIGHTHOUSE AT THE EDGE OF THE WORLD, is another.Verne was so prolific that when he died in 1905 he left a dozen unpublished novels and stories that were not fully published until 1910. They include some of his best writing, such as THE BARSAC MISSION (partly written by Verne's son Michael), THE SURVIVORS OF THE \\\"JONATHAN\\\", THE PURSUIT OF THE METEOR, THE DANUBE PILOT. All of these dealt with science, but also dealt with political systems, and economics, for Verne was interested in all the problems facing modern man. THE LIGHTHOUSE AT THE EDGE OF THE WORLD was the last novel that was published in Verne's lifetime. It does not deal with the political questions or economic ones that perplexed him, but seems to go back to his potboiler period, when he was turning out stories for money while considering better stories for later publication. But nothing Verne wrote is without interest. Rereading THE LIGHTHOUSE one sees what the subtle point is in it. It is the study of how the ego of a villain can prevent him from escaping retribution.Kongre (renamed Jonathan Kongre) is one of the last pirates in the world of 1900. He and his gang find a damaged boat and repair it. They sail it across the Pacific, and reach Staten Island, a small island in the Straits of Magellan controlled by Chile. There they find a lighthouse with a crew of three men. They manage to kill two of them, but the third one (named Vasquez - he's from Chile, remember), hides on the island. Kongre and his men decide that they should prepare to leave the island shortly, before the Chilean Naval relief boat returns in three months to pick up the lighthouse crew. But first they will wreck any boat that comes to the passage, and increase their ill-gotten gains. But the key to the novel (and it is not in the movie) is that Kongre's right hand men (Carcante and Vargas) keep urging him to pack up his supplies and wealth and head to Asia where the money can be divvied up and everyone separate in safety. And each time Kongre won't do it. Initially it is pure greed. He wrecks a boat, and massacres the crew (a scene that is done in the film). The sole survivor is an American, John Davis (the name became Denton in the film, except that it was given to the character of Vasquez). Now with an ally (and not a drunken one, as in the film), Vasquez starts sabotaging Kongre's activities on the island. Carcante keeps suggesting leaving, but Kongre (unused to someone annoying him successfully) keeps delaying in order to catch Vasquez and Davis. The end result is that when he thinks he has them cornered, the Chilean boat appears to sink his craft, kill most of his crew, and confront him. Kongre commits suicide to avoid capture.Much of the mayhem of the movie (with Denton picking off crew members one at a time) is not in the book. Nor is there any female character in the novel (a rarity in most of Verne's stories - he could be quite a feminist when he wished). The egotism of \\\"Jonathan\\\" Kongre is well shown by Yul Brynner's performance, but the subtlety of that trait is lost. The writers presumably did not think the audience could appreciate it. Kirk Douglas does well enough as Denton, but his singlehanded success (Vasquez and Davis work together well to the end of the story, unlike Denton's ally who is killed by the pirates) seems unlikely. The bestiality of the pirates is well shown in the movie, particularly a singularly tall actor who in one scene wears women's clothing to particularly unsettling effect. The film is not a bad minor adventure film, but it could have been better if they had stuck to Verne's theme.\",\n          \"Surprising that Jules Verne would write such a story. Even more surprising that Hollywood would produce it. Yul Brynner is unbelievably good as a man freed of all bounds of convention, free to indulge his taste for cruelty and domination. Douglass is an excellent counterpoint, a courageous individual who's chosen simple solitude as a way to deal with the complications and turmoil society had imposed on him. And Samantha Egger's character is the capper, a woman willing to sacrifice far too much for comfort and safety. Inotherwords, everyman. The movie does show its age and is limited by the conventions of time and place and technology of the time. If you're looking for special effects and action as substitutes for thought, look elsewhere.\"\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"response\",\n      \"properties\": {\n        \"dtype\": \"string\",\n        \"num_unique_values\": 5,\n        \"samples\": [\n          \"Keywords:\\n- Kirk Douglass\\n- casting\\n- beautiful young woman\\n- double roles\\n- 1800's\\n- smooth and white skin\\n- excellent degrading of the film stock\\n- faded greys and yellows\\n- TNT\\n\\nSentiment:\\nPositive\\n\\nThe review expresses a positive sentiment overall. It praises the casting of a beautiful young woman playing double roles, the excellent degrading of the film stock, and the overall aesthetics of the film, including the smooth and white skin of the actress and the faded greys and yellows. The reviewer also encourages others to watch the film, as it is played on TNT from time to time.\",\n          \"Keywords:\\n- Jules Verne\\n- Science fiction\\n- Novels\\n- Themes of progress and its consequences\\n- Villain characters (Captain Nemo, Robur, Kongre)\\n- Lighthouse\\n- Piracy\\n- Ego/greed\\n\\nSentiment:\\nThe review is generally positive about Jules Verne's works and their themes, particularly the nuanced examination of the negative consequences of progress. However, the review is more critical of the film adaptation, feeling that it lost some of the subtlety and thematic depth of the original novel. Overall, the sentiment is Positive.\",\n          \"Keywords:\\n- Jules Verne\\n- Hollywood\\n- Yul Brynner\\n- Douglass\\n- Samantha Eggar\\n- Everyman\\n- Special effects\\n- Action\\n\\nSentiment:\\nThe overall sentiment of the review is positive, with some mixed elements. Here's a breakdown:\\n\\nPositive:\\n- Praise for Yul Brynner's performance as a man \\\"freed of all bounds of convention\\\"\\n- Praise for Douglass as an \\\"excellent counterpart\\\" and \\\"courageous individual\\\"\\n- Praise for Samantha Eggar's character as representing \\\"everyman\\\"\\n\\nNegative:\\n- The movie \\\"shows its age\\\" and is \\\"limited by the conventions of time and place and technology of the time\\\"\\n\\nNeutral:\\n- Surprise that Jules Verne would write such a story and that Hollywood would produce it.\\n\\nOverall, the review seems to appreciate the depth and complexity of the characters and themes, while acknowledging the limitations of the film due to its age.\"\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    }\n  ]\n}",
              "type": "dataframe"
            },
            "text/html": [
              "\n",
              "  <div id=\"df-2fcd453e-1217-4d35-86c8-6e5236646e4b\" class=\"colab-df-container\">\n",
              "    <div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>review</th>\n",
              "      <th>response</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>The Light At The Edge of the World marks Kirk ...</td>\n",
              "      <td>Keywords:\\n- Kirk Douglas\\n- Jules Verne\\n- 20...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>Remove yourself from the Kirk Douglass aspects...</td>\n",
              "      <td>Keywords:\\n- Kirk Douglass\\n- casting\\n- beaut...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>Surprising that Jules Verne would write such a...</td>\n",
              "      <td>Keywords:\\n- Jules Verne\\n- Hollywood\\n- Yul B...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>it is a quite slow pace face-to-face Brynner/D...</td>\n",
              "      <td>Keywords:\\n- slow pace\\n- face-to-face\\n- viol...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>Jules Verne wrote about 80 novels as well as p...</td>\n",
              "      <td>Keywords:\\n- Jules Verne\\n- Science fiction\\n-...</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>\n",
              "    <div class=\"colab-df-buttons\">\n",
              "\n",
              "  <div class=\"colab-df-container\">\n",
              "    <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-2fcd453e-1217-4d35-86c8-6e5236646e4b')\"\n",
              "            title=\"Convert this dataframe to an interactive table.\"\n",
              "            style=\"display:none;\">\n",
              "\n",
              "  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
              "    <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
              "  </svg>\n",
              "    </button>\n",
              "\n",
              "  <style>\n",
              "    .colab-df-container {\n",
              "      display:flex;\n",
              "      gap: 12px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert {\n",
              "      background-color: #E8F0FE;\n",
              "      border: none;\n",
              "      border-radius: 50%;\n",
              "      cursor: pointer;\n",
              "      display: none;\n",
              "      fill: #1967D2;\n",
              "      height: 32px;\n",
              "      padding: 0 0 0 0;\n",
              "      width: 32px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert:hover {\n",
              "      background-color: #E2EBFA;\n",
              "      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "      fill: #174EA6;\n",
              "    }\n",
              "\n",
              "    .colab-df-buttons div {\n",
              "      margin-bottom: 4px;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert {\n",
              "      background-color: #3B4455;\n",
              "      fill: #D2E3FC;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert:hover {\n",
              "      background-color: #434B5C;\n",
              "      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
              "      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
              "      fill: #FFFFFF;\n",
              "    }\n",
              "  </style>\n",
              "\n",
              "    <script>\n",
              "      const buttonEl =\n",
              "        document.querySelector('#df-2fcd453e-1217-4d35-86c8-6e5236646e4b button.colab-df-convert');\n",
              "      buttonEl.style.display =\n",
              "        google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "\n",
              "      async function convertToInteractive(key) {\n",
              "        const element = document.querySelector('#df-2fcd453e-1217-4d35-86c8-6e5236646e4b');\n",
              "        const dataTable =\n",
              "          await google.colab.kernel.invokeFunction('convertToInteractive',\n",
              "                                                    [key], {});\n",
              "        if (!dataTable) return;\n",
              "\n",
              "        const docLinkHtml = 'Like what you see? Visit the ' +\n",
              "          '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
              "          + ' to learn more about interactive tables.';\n",
              "        element.innerHTML = '';\n",
              "        dataTable['output_type'] = 'display_data';\n",
              "        await google.colab.output.renderOutput(dataTable, element);\n",
              "        const docLink = document.createElement('div');\n",
              "        docLink.innerHTML = docLinkHtml;\n",
              "        element.appendChild(docLink);\n",
              "      }\n",
              "    </script>\n",
              "  </div>\n",
              "\n",
              "\n",
              "    <div id=\"df-33d9f164-7c5a-4955-8c9f-a621205030c9\">\n",
              "      <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-33d9f164-7c5a-4955-8c9f-a621205030c9')\"\n",
              "                title=\"Suggest charts\"\n",
              "                style=\"display:none;\">\n",
              "\n",
              "<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
              "     width=\"24px\">\n",
              "    <g>\n",
              "        <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
              "    </g>\n",
              "</svg>\n",
              "      </button>\n",
              "\n",
              "<style>\n",
              "  .colab-df-quickchart {\n",
              "      --bg-color: #E8F0FE;\n",
              "      --fill-color: #1967D2;\n",
              "      --hover-bg-color: #E2EBFA;\n",
              "      --hover-fill-color: #174EA6;\n",
              "      --disabled-fill-color: #AAA;\n",
              "      --disabled-bg-color: #DDD;\n",
              "  }\n",
              "\n",
              "  [theme=dark] .colab-df-quickchart {\n",
              "      --bg-color: #3B4455;\n",
              "      --fill-color: #D2E3FC;\n",
              "      --hover-bg-color: #434B5C;\n",
              "      --hover-fill-color: #FFFFFF;\n",
              "      --disabled-bg-color: #3B4455;\n",
              "      --disabled-fill-color: #666;\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart {\n",
              "    background-color: var(--bg-color);\n",
              "    border: none;\n",
              "    border-radius: 50%;\n",
              "    cursor: pointer;\n",
              "    display: none;\n",
              "    fill: var(--fill-color);\n",
              "    height: 32px;\n",
              "    padding: 0;\n",
              "    width: 32px;\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart:hover {\n",
              "    background-color: var(--hover-bg-color);\n",
              "    box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "    fill: var(--button-hover-fill-color);\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart-complete:disabled,\n",
              "  .colab-df-quickchart-complete:disabled:hover {\n",
              "    background-color: var(--disabled-bg-color);\n",
              "    fill: var(--disabled-fill-color);\n",
              "    box-shadow: none;\n",
              "  }\n",
              "\n",
              "  .colab-df-spinner {\n",
              "    border: 2px solid var(--fill-color);\n",
              "    border-color: transparent;\n",
              "    border-bottom-color: var(--fill-color);\n",
              "    animation:\n",
              "      spin 1s steps(1) infinite;\n",
              "  }\n",
              "\n",
              "  @keyframes spin {\n",
              "    0% {\n",
              "      border-color: transparent;\n",
              "      border-bottom-color: var(--fill-color);\n",
              "      border-left-color: var(--fill-color);\n",
              "    }\n",
              "    20% {\n",
              "      border-color: transparent;\n",
              "      border-left-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "    }\n",
              "    30% {\n",
              "      border-color: transparent;\n",
              "      border-left-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "      border-right-color: var(--fill-color);\n",
              "    }\n",
              "    40% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "    }\n",
              "    60% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "    }\n",
              "    80% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "      border-bottom-color: var(--fill-color);\n",
              "    }\n",
              "    90% {\n",
              "      border-color: transparent;\n",
              "      border-bottom-color: var(--fill-color);\n",
              "    }\n",
              "  }\n",
              "</style>\n",
              "\n",
              "      <script>\n",
              "        async function quickchart(key) {\n",
              "          const quickchartButtonEl =\n",
              "            document.querySelector('#' + key + ' button');\n",
              "          quickchartButtonEl.disabled = true;  // To prevent multiple clicks.\n",
              "          quickchartButtonEl.classList.add('colab-df-spinner');\n",
              "          try {\n",
              "            const charts = await google.colab.kernel.invokeFunction(\n",
              "                'suggestCharts', [key], {});\n",
              "          } catch (error) {\n",
              "            console.error('Error during call to suggestCharts:', error);\n",
              "          }\n",
              "          quickchartButtonEl.classList.remove('colab-df-spinner');\n",
              "          quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
              "        }\n",
              "        (() => {\n",
              "          let quickchartButtonEl =\n",
              "            document.querySelector('#df-33d9f164-7c5a-4955-8c9f-a621205030c9 button');\n",
              "          quickchartButtonEl.style.display =\n",
              "            google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "        })();\n",
              "      </script>\n",
              "    </div>\n",
              "\n",
              "    </div>\n",
              "  </div>\n"
            ],
            "text/plain": [
              "                                              review  \\\n",
              "0  The Light At The Edge of the World marks Kirk ...   \n",
              "1  Remove yourself from the Kirk Douglass aspects...   \n",
              "2  Surprising that Jules Verne would write such a...   \n",
              "3  it is a quite slow pace face-to-face Brynner/D...   \n",
              "4  Jules Verne wrote about 80 novels as well as p...   \n",
              "\n",
              "                                            response  \n",
              "0  Keywords:\\n- Kirk Douglas\\n- Jules Verne\\n- 20...  \n",
              "1  Keywords:\\n- Kirk Douglass\\n- casting\\n- beaut...  \n",
              "2  Keywords:\\n- Jules Verne\\n- Hollywood\\n- Yul B...  \n",
              "3  Keywords:\\n- slow pace\\n- face-to-face\\n- viol...  \n",
              "4  Keywords:\\n- Jules Verne\\n- Science fiction\\n-...  "
            ]
          },
          "execution_count": 15,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "%%bigquery --project {PROJECT_ID}\n",
        "\n",
        "SELECT\n",
        "  review,\n",
        "  ml_generate_text_llm_result as response\n",
        "FROM\n",
        "  ML.GENERATE_TEXT(\n",
        "    MODEL `bq_ai_tutorial.claude_3_haiku`,\n",
        "    (\n",
        "      SELECT\n",
        "        review,\n",
        "        CONCAT('Extract the keywords and sentiment (Positive, Negative, or Neutral) from the following review:',review) AS prompt,\n",
        "      FROM\n",
        "        `bigquery-public-data.imdb.reviews`\n",
        "      WHERE movie_id = \"tt0067345\"\n",
        "      LIMIT 5\n",
        "    ),\n",
        "    STRUCT(\n",
        "      TRUE AS flatten_json_output,\n",
        "      500 AS max_output_tokens\n",
        "    )\n",
        "  );"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "scalar_md"
      },
      "source": [
        "## Perform row-Level AI with scalar functions `AI.GENERATE_BOOL`, `AI.GENERATE_DOUBLE`, and `AI.GENERATE_INT`\n",
        "\n",
        "BigQuery's scalar AI functions ([`AI.GENERATE_BOOL`](https://cloud.google.com/bigquery/docs/reference/standard-sql/bigqueryml-syntax-ai-generate-bool), [`AI.GENERATE_DOUBLE`](https://cloud.google.com/bigquery/docs/reference/standard-sql/bigqueryml-syntax-ai-generate-double), and [`AI.GENERATE_INT`](https://cloud.google.com/bigquery/docs/reference/standard-sql/bigqueryml-syntax-ai-generate-int)) bring the power of LLMs for AI-driven filtering, classification, and data extraction directly within your SQL queries.\n",
        "\n",
        "On the surface, these functions perform tasks similar to that of using `AI.GENERATE` with a defined `output_schema` of data type of `BOOL`, `FLOAT64`, or `INT64`. However, these functions aren't only available for use in a `SELECT` clause, but also in a `WHERE` clause, giving you the power to do complex filtering with natural language. The next few examples focus on the filtering use case.\n"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "generate_bool_md"
      },
      "source": [
        "### Using `AI.GENERATE_BOOL`: Filtering for drought tolerant tree species\n",
        "\n",
        "Let's use [`AI.GENERATE_BOOL`](https://cloud.google.com/bigquery/docs/reference/standard-sql/bigqueryml-syntax-ai-generate-bool) to return tree species in `bigquery-public-data.new_york_trees.tree_species` that are drought tolerant."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "generate_bool_code"
      },
      "outputs": [
        {
          "data": {
            "application/vnd.jupyter.widget-view+json": {
              "model_id": "6cb65babb91e4be3a06d9fbba7904d82",
              "version_major": 2,
              "version_minor": 0
            },
            "text/plain": [
              "Query is running:   0%|          |"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "data": {
            "application/vnd.jupyter.widget-view+json": {
              "model_id": "b8fb973a019e4e02bf7794ea9e9fd70d",
              "version_major": 2,
              "version_minor": 0
            },
            "text/plain": [
              "Downloading:   0%|          |"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "data": {
            "application/vnd.google.colaboratory.intrinsic+json": {
              "summary": "{\n  \"name\": \"get_ipython()\",\n  \"rows\": 36,\n  \"fields\": [\n    {\n      \"column\": \"species_scientific_name\",\n      \"properties\": {\n        \"dtype\": \"string\",\n        \"num_unique_values\": 36,\n        \"samples\": [\n          \"Ginkgo biloba\",\n          \"Zelkova serrata\",\n          \"Maackia amurensis\"\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"species_common_name\",\n      \"properties\": {\n        \"dtype\": \"string\",\n        \"num_unique_values\": 36,\n        \"samples\": [\n          \"Ginkgo\",\n          \"Japanese Zelkova\",\n          \"Amur Maackia\"\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    }\n  ]\n}",
              "type": "dataframe"
            },
            "text/html": [
              "\n",
              "  <div id=\"df-f97e939e-bc3b-42bc-ac45-c75b86948011\" class=\"colab-df-container\">\n",
              "    <div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>species_scientific_name</th>\n",
              "      <th>species_common_name</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>Koelreuteria paniculata</td>\n",
              "      <td>Goldenraintree</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>Corylus colurna</td>\n",
              "      <td>Turkish Filbert</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>Ostrya virginiana</td>\n",
              "      <td>American Hophornbeam</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>Carpinus betulus</td>\n",
              "      <td>European Hornbeam</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>Cornus mas</td>\n",
              "      <td>Cornelian Cherry</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>5</th>\n",
              "      <td>Cotinus sp.</td>\n",
              "      <td>Smoke Tree</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>6</th>\n",
              "      <td>Acer ginnala</td>\n",
              "      <td>Amur Maple</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>7</th>\n",
              "      <td>Acer campestre</td>\n",
              "      <td>Hedge Maple</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>8</th>\n",
              "      <td>Gleditsia triacanthos var. inermis</td>\n",
              "      <td>Honeylocust</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>9</th>\n",
              "      <td>Platanus x acerifolia</td>\n",
              "      <td>London Plane</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>10</th>\n",
              "      <td>Prunus 'Okame'</td>\n",
              "      <td>Okame Cherry</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>11</th>\n",
              "      <td>Ulmus parvifolia</td>\n",
              "      <td>Chinese Elm</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>12</th>\n",
              "      <td>Fraxinus pennsylvanica</td>\n",
              "      <td>Green Ash</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>13</th>\n",
              "      <td>Zelkova serrata</td>\n",
              "      <td>Japanese Zelkova</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>14</th>\n",
              "      <td>Quercus bicolor</td>\n",
              "      <td>Swamp White Oak</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>15</th>\n",
              "      <td>Crataegus sp.</td>\n",
              "      <td>Hawthorn</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>16</th>\n",
              "      <td>Styphnolobium japonicum</td>\n",
              "      <td>Scholar Tree</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>17</th>\n",
              "      <td>Prunus virginiana 'Schubert'</td>\n",
              "      <td>Schubert Cherry</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>18</th>\n",
              "      <td>Eucommia ulmoides</td>\n",
              "      <td>Hardy Rubber Tree</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>19</th>\n",
              "      <td>Tilia tomentosa</td>\n",
              "      <td>Silver Linden</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>20</th>\n",
              "      <td>Prunus cerasifera</td>\n",
              "      <td>Purpleleaf Plum</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>21</th>\n",
              "      <td>Syringa reticulata</td>\n",
              "      <td>Japanese Tree Lilac</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>22</th>\n",
              "      <td>Quercus acutissima</td>\n",
              "      <td>Sawtooth Oak</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>23</th>\n",
              "      <td>Quercus spp. 'Fastigiata'</td>\n",
              "      <td>Fastigiata Oak</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>24</th>\n",
              "      <td>Fraxinus 'Leprechaun'</td>\n",
              "      <td>Leprechaun Green Ash</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>25</th>\n",
              "      <td>Lagerstroemia indica</td>\n",
              "      <td>Crapemyrtle</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>26</th>\n",
              "      <td>Maackia amurensis</td>\n",
              "      <td>Amur Maackia</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>27</th>\n",
              "      <td>Quercus imbricaria</td>\n",
              "      <td>Shingle Oak</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>28</th>\n",
              "      <td>Gymnocladus dioicus</td>\n",
              "      <td>Coffeetree</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>29</th>\n",
              "      <td>Tilia x euchlora</td>\n",
              "      <td>Crimean Linden</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>30</th>\n",
              "      <td>Pyrus calleryana</td>\n",
              "      <td>Callery Pear</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>31</th>\n",
              "      <td>Quercus robur</td>\n",
              "      <td>English Oak</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>32</th>\n",
              "      <td>Ulmus americana</td>\n",
              "      <td>American Elm</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>33</th>\n",
              "      <td>Acer truncatum</td>\n",
              "      <td>Shantung Maple</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>34</th>\n",
              "      <td>Celtis occidentalis</td>\n",
              "      <td>Hackberry</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>35</th>\n",
              "      <td>Ginkgo biloba</td>\n",
              "      <td>Ginkgo</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>\n",
              "    <div class=\"colab-df-buttons\">\n",
              "\n",
              "  <div class=\"colab-df-container\">\n",
              "    <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-f97e939e-bc3b-42bc-ac45-c75b86948011')\"\n",
              "            title=\"Convert this dataframe to an interactive table.\"\n",
              "            style=\"display:none;\">\n",
              "\n",
              "  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
              "    <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
              "  </svg>\n",
              "    </button>\n",
              "\n",
              "  <style>\n",
              "    .colab-df-container {\n",
              "      display:flex;\n",
              "      gap: 12px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert {\n",
              "      background-color: #E8F0FE;\n",
              "      border: none;\n",
              "      border-radius: 50%;\n",
              "      cursor: pointer;\n",
              "      display: none;\n",
              "      fill: #1967D2;\n",
              "      height: 32px;\n",
              "      padding: 0 0 0 0;\n",
              "      width: 32px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert:hover {\n",
              "      background-color: #E2EBFA;\n",
              "      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "      fill: #174EA6;\n",
              "    }\n",
              "\n",
              "    .colab-df-buttons div {\n",
              "      margin-bottom: 4px;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert {\n",
              "      background-color: #3B4455;\n",
              "      fill: #D2E3FC;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert:hover {\n",
              "      background-color: #434B5C;\n",
              "      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
              "      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
              "      fill: #FFFFFF;\n",
              "    }\n",
              "  </style>\n",
              "\n",
              "    <script>\n",
              "      const buttonEl =\n",
              "        document.querySelector('#df-f97e939e-bc3b-42bc-ac45-c75b86948011 button.colab-df-convert');\n",
              "      buttonEl.style.display =\n",
              "        google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "\n",
              "      async function convertToInteractive(key) {\n",
              "        const element = document.querySelector('#df-f97e939e-bc3b-42bc-ac45-c75b86948011');\n",
              "        const dataTable =\n",
              "          await google.colab.kernel.invokeFunction('convertToInteractive',\n",
              "                                                    [key], {});\n",
              "        if (!dataTable) return;\n",
              "\n",
              "        const docLinkHtml = 'Like what you see? Visit the ' +\n",
              "          '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
              "          + ' to learn more about interactive tables.';\n",
              "        element.innerHTML = '';\n",
              "        dataTable['output_type'] = 'display_data';\n",
              "        await google.colab.output.renderOutput(dataTable, element);\n",
              "        const docLink = document.createElement('div');\n",
              "        docLink.innerHTML = docLinkHtml;\n",
              "        element.appendChild(docLink);\n",
              "      }\n",
              "    </script>\n",
              "  </div>\n",
              "\n",
              "\n",
              "    <div id=\"df-76dfe5e7-a228-4c2d-9933-26f9a5643785\">\n",
              "      <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-76dfe5e7-a228-4c2d-9933-26f9a5643785')\"\n",
              "                title=\"Suggest charts\"\n",
              "                style=\"display:none;\">\n",
              "\n",
              "<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
              "     width=\"24px\">\n",
              "    <g>\n",
              "        <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
              "    </g>\n",
              "</svg>\n",
              "      </button>\n",
              "\n",
              "<style>\n",
              "  .colab-df-quickchart {\n",
              "      --bg-color: #E8F0FE;\n",
              "      --fill-color: #1967D2;\n",
              "      --hover-bg-color: #E2EBFA;\n",
              "      --hover-fill-color: #174EA6;\n",
              "      --disabled-fill-color: #AAA;\n",
              "      --disabled-bg-color: #DDD;\n",
              "  }\n",
              "\n",
              "  [theme=dark] .colab-df-quickchart {\n",
              "      --bg-color: #3B4455;\n",
              "      --fill-color: #D2E3FC;\n",
              "      --hover-bg-color: #434B5C;\n",
              "      --hover-fill-color: #FFFFFF;\n",
              "      --disabled-bg-color: #3B4455;\n",
              "      --disabled-fill-color: #666;\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart {\n",
              "    background-color: var(--bg-color);\n",
              "    border: none;\n",
              "    border-radius: 50%;\n",
              "    cursor: pointer;\n",
              "    display: none;\n",
              "    fill: var(--fill-color);\n",
              "    height: 32px;\n",
              "    padding: 0;\n",
              "    width: 32px;\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart:hover {\n",
              "    background-color: var(--hover-bg-color);\n",
              "    box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "    fill: var(--button-hover-fill-color);\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart-complete:disabled,\n",
              "  .colab-df-quickchart-complete:disabled:hover {\n",
              "    background-color: var(--disabled-bg-color);\n",
              "    fill: var(--disabled-fill-color);\n",
              "    box-shadow: none;\n",
              "  }\n",
              "\n",
              "  .colab-df-spinner {\n",
              "    border: 2px solid var(--fill-color);\n",
              "    border-color: transparent;\n",
              "    border-bottom-color: var(--fill-color);\n",
              "    animation:\n",
              "      spin 1s steps(1) infinite;\n",
              "  }\n",
              "\n",
              "  @keyframes spin {\n",
              "    0% {\n",
              "      border-color: transparent;\n",
              "      border-bottom-color: var(--fill-color);\n",
              "      border-left-color: var(--fill-color);\n",
              "    }\n",
              "    20% {\n",
              "      border-color: transparent;\n",
              "      border-left-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "    }\n",
              "    30% {\n",
              "      border-color: transparent;\n",
              "      border-left-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "      border-right-color: var(--fill-color);\n",
              "    }\n",
              "    40% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "    }\n",
              "    60% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "    }\n",
              "    80% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "      border-bottom-color: var(--fill-color);\n",
              "    }\n",
              "    90% {\n",
              "      border-color: transparent;\n",
              "      border-bottom-color: var(--fill-color);\n",
              "    }\n",
              "  }\n",
              "</style>\n",
              "\n",
              "      <script>\n",
              "        async function quickchart(key) {\n",
              "          const quickchartButtonEl =\n",
              "            document.querySelector('#' + key + ' button');\n",
              "          quickchartButtonEl.disabled = true;  // To prevent multiple clicks.\n",
              "          quickchartButtonEl.classList.add('colab-df-spinner');\n",
              "          try {\n",
              "            const charts = await google.colab.kernel.invokeFunction(\n",
              "                'suggestCharts', [key], {});\n",
              "          } catch (error) {\n",
              "            console.error('Error during call to suggestCharts:', error);\n",
              "          }\n",
              "          quickchartButtonEl.classList.remove('colab-df-spinner');\n",
              "          quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
              "        }\n",
              "        (() => {\n",
              "          let quickchartButtonEl =\n",
              "            document.querySelector('#df-76dfe5e7-a228-4c2d-9933-26f9a5643785 button');\n",
              "          quickchartButtonEl.style.display =\n",
              "            google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "        })();\n",
              "      </script>\n",
              "    </div>\n",
              "\n",
              "    </div>\n",
              "  </div>\n"
            ],
            "text/plain": [
              "               species_scientific_name   species_common_name\n",
              "0              Koelreuteria paniculata        Goldenraintree\n",
              "1                      Corylus colurna       Turkish Filbert\n",
              "2                    Ostrya virginiana  American Hophornbeam\n",
              "3                     Carpinus betulus     European Hornbeam\n",
              "4                           Cornus mas      Cornelian Cherry\n",
              "5                          Cotinus sp.            Smoke Tree\n",
              "6                         Acer ginnala            Amur Maple\n",
              "7                       Acer campestre           Hedge Maple\n",
              "8   Gleditsia triacanthos var. inermis           Honeylocust\n",
              "9                Platanus x acerifolia          London Plane\n",
              "10                      Prunus 'Okame'          Okame Cherry\n",
              "11                    Ulmus parvifolia           Chinese Elm\n",
              "12              Fraxinus pennsylvanica             Green Ash\n",
              "13                     Zelkova serrata      Japanese Zelkova\n",
              "14                     Quercus bicolor       Swamp White Oak\n",
              "15                       Crataegus sp.              Hawthorn\n",
              "16             Styphnolobium japonicum          Scholar Tree\n",
              "17        Prunus virginiana 'Schubert'       Schubert Cherry\n",
              "18                   Eucommia ulmoides     Hardy Rubber Tree\n",
              "19                     Tilia tomentosa         Silver Linden\n",
              "20                   Prunus cerasifera       Purpleleaf Plum\n",
              "21                  Syringa reticulata   Japanese Tree Lilac\n",
              "22                  Quercus acutissima          Sawtooth Oak\n",
              "23           Quercus spp. 'Fastigiata'        Fastigiata Oak\n",
              "24               Fraxinus 'Leprechaun'  Leprechaun Green Ash\n",
              "25                Lagerstroemia indica           Crapemyrtle\n",
              "26                   Maackia amurensis          Amur Maackia\n",
              "27                  Quercus imbricaria           Shingle Oak\n",
              "28                 Gymnocladus dioicus            Coffeetree\n",
              "29                    Tilia x euchlora        Crimean Linden\n",
              "30                    Pyrus calleryana          Callery Pear\n",
              "31                       Quercus robur           English Oak\n",
              "32                     Ulmus americana          American Elm\n",
              "33                      Acer truncatum        Shantung Maple\n",
              "34                 Celtis occidentalis             Hackberry\n",
              "35                       Ginkgo biloba                Ginkgo"
            ]
          },
          "execution_count": 16,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "%%bigquery --project {PROJECT_ID}\n",
        "\n",
        "SELECT\n",
        "  species_scientific_name,\n",
        "  species_common_name\n",
        "FROM\n",
        "  `bigquery-public-data.new_york_trees.tree_species`\n",
        "WHERE\n",
        "  AI.GENERATE_BOOL(\n",
        "    ('Is this tree species drought tolerant?', species_scientific_name),\n",
        "    connection_id => 'us.test_connection',\n",
        "    endpoint => 'gemini-2.5-flash').result = true"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "generate_double_md"
      },
      "source": [
        "### Using `AI.GENERATE_DOUBLE`: Filtering for tree species with a minimum average lifespan\n",
        "\n",
        "With [`AI.GENERATE_DOUBLE`](https://cloud.google.com/bigquery/docs/reference/standard-sql/bigqueryml-syntax-ai-generate-double), we can get a numerical response of type `FLOAT64`, such as average lifespan in years of each tree species. Again, we'll use `bigquery-public-data.new_york_trees.tree_species` table, this time filtering for species that meet a minimum average lifespan requirement of 19 years."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "xT9vakyw1PZ2"
      },
      "outputs": [
        {
          "data": {
            "application/vnd.jupyter.widget-view+json": {
              "model_id": "fb42e508c3034da7b666ddd7973ea0fa",
              "version_major": 2,
              "version_minor": 0
            },
            "text/plain": [
              "Query is running:   0%|          |"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "data": {
            "application/vnd.jupyter.widget-view+json": {
              "model_id": "860e0601c2584fe3bd996e23ce4043f8",
              "version_major": 2,
              "version_minor": 0
            },
            "text/plain": [
              "Downloading:   0%|          |"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "data": {
            "application/vnd.google.colaboratory.intrinsic+json": {
              "summary": "{\n  \"name\": \"get_ipython()\",\n  \"rows\": 57,\n  \"fields\": [\n    {\n      \"column\": \"species_scientific_name\",\n      \"properties\": {\n        \"dtype\": \"string\",\n        \"num_unique_values\": 57,\n        \"samples\": [\n          \"Koelreuteria paniculata\",\n          \"Liriodendron tulipifera\",\n          \"Carpinus caroliniana\"\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"species_common_name\",\n      \"properties\": {\n        \"dtype\": \"string\",\n        \"num_unique_values\": 57,\n        \"samples\": [\n          \"Goldenraintree\",\n          \"Tulip Tree\",\n          \"American Hornbeam\"\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    }\n  ]\n}",
              "type": "dataframe"
            },
            "text/html": [
              "\n",
              "  <div id=\"df-736e8f03-a6d0-4812-a2aa-ed89d9e76093\" class=\"colab-df-container\">\n",
              "    <div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>species_scientific_name</th>\n",
              "      <th>species_common_name</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>Koelreuteria paniculata</td>\n",
              "      <td>Goldenraintree</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>Corylus colurna</td>\n",
              "      <td>Turkish Filbert</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>Prunus serrulata 'Kwanzan'</td>\n",
              "      <td>Japanese Flowering Cherry</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>Prunus x yedoensis</td>\n",
              "      <td>Yoshino Cherry</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>Cornus mas</td>\n",
              "      <td>Cornelian Cherry</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>5</th>\n",
              "      <td>Liriodendron tulipifera</td>\n",
              "      <td>Tulip Tree</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>6</th>\n",
              "      <td>Malus sp.</td>\n",
              "      <td>Crabapple</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>7</th>\n",
              "      <td>Quercus bicolor</td>\n",
              "      <td>Swamp White Oak</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>8</th>\n",
              "      <td>Quercus palustris</td>\n",
              "      <td>Pin Oak</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>9</th>\n",
              "      <td>Crataegus sp.</td>\n",
              "      <td>Hawthorn</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>10</th>\n",
              "      <td>Styphnolobium japonicum</td>\n",
              "      <td>Scholar Tree</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>11</th>\n",
              "      <td>Prunus virginiana 'Schubert'</td>\n",
              "      <td>Schubert Cherry</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>12</th>\n",
              "      <td>Cotinus sp.</td>\n",
              "      <td>Smoke Tree</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>13</th>\n",
              "      <td>Acer ginnala</td>\n",
              "      <td>Amur Maple</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>14</th>\n",
              "      <td>Amelanchier sp.</td>\n",
              "      <td>Serviceberry</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>15</th>\n",
              "      <td>Acer campestre</td>\n",
              "      <td>Hedge Maple</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>16</th>\n",
              "      <td>Gleditsia triacanthos var. inermis</td>\n",
              "      <td>Honeylocust</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>17</th>\n",
              "      <td>Tilia cordata</td>\n",
              "      <td>Littleleaf Linden</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>18</th>\n",
              "      <td>Platanus x acerifolia</td>\n",
              "      <td>London Plane</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>19</th>\n",
              "      <td>Prunus 'Okame'</td>\n",
              "      <td>Okame Cherry</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>20</th>\n",
              "      <td>Ulmus parvifolia</td>\n",
              "      <td>Chinese Elm</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>21</th>\n",
              "      <td>Cercidiphyllum japonicum</td>\n",
              "      <td>Katsura Tree</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>22</th>\n",
              "      <td>Fraxinus pennsylvanica</td>\n",
              "      <td>Green Ash</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>23</th>\n",
              "      <td>Zelkova serrata</td>\n",
              "      <td>Japanese Zelkova</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>24</th>\n",
              "      <td>Acer truncatum</td>\n",
              "      <td>Shantung Maple</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>25</th>\n",
              "      <td>Celtis occidentalis</td>\n",
              "      <td>Hackberry</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>26</th>\n",
              "      <td>Tilia americana</td>\n",
              "      <td>American Linden</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>27</th>\n",
              "      <td>Acer rubrum</td>\n",
              "      <td>Red Maple</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>28</th>\n",
              "      <td>Ginkgo biloba</td>\n",
              "      <td>Ginkgo</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>29</th>\n",
              "      <td>Fraxinus americana</td>\n",
              "      <td>White Ash</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>30</th>\n",
              "      <td>Carpinus caroliniana</td>\n",
              "      <td>American Hornbeam</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>31</th>\n",
              "      <td>Eucommia ulmoides</td>\n",
              "      <td>Hardy Rubber Tree</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>32</th>\n",
              "      <td>Quercus rubra</td>\n",
              "      <td>Northern Red Oak</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>33</th>\n",
              "      <td>Tilia tomentosa</td>\n",
              "      <td>Silver Linden</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>34</th>\n",
              "      <td>Prunus cerasifera</td>\n",
              "      <td>Purpleleaf Plum</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>35</th>\n",
              "      <td>Syringa reticulata</td>\n",
              "      <td>Japanese Tree Lilac</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>36</th>\n",
              "      <td>Quercus acutissima</td>\n",
              "      <td>Sawtooth Oak</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>37</th>\n",
              "      <td>Nyssa sylvatica</td>\n",
              "      <td>Black Gum</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>38</th>\n",
              "      <td>Quercus phellos</td>\n",
              "      <td>Willow Oak</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>39</th>\n",
              "      <td>Prunus padus</td>\n",
              "      <td>European Birdcherry</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>40</th>\n",
              "      <td>Fraxinus 'Leprechaun'</td>\n",
              "      <td>Leprechaun Green Ash</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>41</th>\n",
              "      <td>Lagerstroemia indica</td>\n",
              "      <td>Crapemyrtle</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>42</th>\n",
              "      <td>Maackia amurensis</td>\n",
              "      <td>Amur Maackia</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>43</th>\n",
              "      <td>Quercus imbricaria</td>\n",
              "      <td>Shingle Oak</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>44</th>\n",
              "      <td>Gymnocladus dioicus</td>\n",
              "      <td>Coffeetree</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>45</th>\n",
              "      <td>Tilia x euchlora</td>\n",
              "      <td>Crimean Linden</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>46</th>\n",
              "      <td>Pyrus calleryana</td>\n",
              "      <td>Callery Pear</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>47</th>\n",
              "      <td>Quercus robur</td>\n",
              "      <td>English Oak</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>48</th>\n",
              "      <td>Ulmus americana</td>\n",
              "      <td>American Elm</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>49</th>\n",
              "      <td>Ostrya virginiana</td>\n",
              "      <td>American Hophornbeam</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>50</th>\n",
              "      <td>Carpinus betulus</td>\n",
              "      <td>European Hornbeam</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>51</th>\n",
              "      <td>Metasequoia glyptostroboides</td>\n",
              "      <td>Dawn Redwood</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>52</th>\n",
              "      <td>Prunus sargentii</td>\n",
              "      <td>Sargent Cherry</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>53</th>\n",
              "      <td>Cercis canadensis</td>\n",
              "      <td>Eastern Redbud</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>54</th>\n",
              "      <td>Quercus spp. 'Fastigiata'</td>\n",
              "      <td>Fastigiata Oak</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>55</th>\n",
              "      <td>Liquidambar styraciflua</td>\n",
              "      <td>Sweetgum</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>56</th>\n",
              "      <td>Taxodium distichum</td>\n",
              "      <td>Baldcypress</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>\n",
              "    <div class=\"colab-df-buttons\">\n",
              "\n",
              "  <div class=\"colab-df-container\">\n",
              "    <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-736e8f03-a6d0-4812-a2aa-ed89d9e76093')\"\n",
              "            title=\"Convert this dataframe to an interactive table.\"\n",
              "            style=\"display:none;\">\n",
              "\n",
              "  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
              "    <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
              "  </svg>\n",
              "    </button>\n",
              "\n",
              "  <style>\n",
              "    .colab-df-container {\n",
              "      display:flex;\n",
              "      gap: 12px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert {\n",
              "      background-color: #E8F0FE;\n",
              "      border: none;\n",
              "      border-radius: 50%;\n",
              "      cursor: pointer;\n",
              "      display: none;\n",
              "      fill: #1967D2;\n",
              "      height: 32px;\n",
              "      padding: 0 0 0 0;\n",
              "      width: 32px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert:hover {\n",
              "      background-color: #E2EBFA;\n",
              "      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "      fill: #174EA6;\n",
              "    }\n",
              "\n",
              "    .colab-df-buttons div {\n",
              "      margin-bottom: 4px;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert {\n",
              "      background-color: #3B4455;\n",
              "      fill: #D2E3FC;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert:hover {\n",
              "      background-color: #434B5C;\n",
              "      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
              "      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
              "      fill: #FFFFFF;\n",
              "    }\n",
              "  </style>\n",
              "\n",
              "    <script>\n",
              "      const buttonEl =\n",
              "        document.querySelector('#df-736e8f03-a6d0-4812-a2aa-ed89d9e76093 button.colab-df-convert');\n",
              "      buttonEl.style.display =\n",
              "        google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "\n",
              "      async function convertToInteractive(key) {\n",
              "        const element = document.querySelector('#df-736e8f03-a6d0-4812-a2aa-ed89d9e76093');\n",
              "        const dataTable =\n",
              "          await google.colab.kernel.invokeFunction('convertToInteractive',\n",
              "                                                    [key], {});\n",
              "        if (!dataTable) return;\n",
              "\n",
              "        const docLinkHtml = 'Like what you see? Visit the ' +\n",
              "          '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
              "          + ' to learn more about interactive tables.';\n",
              "        element.innerHTML = '';\n",
              "        dataTable['output_type'] = 'display_data';\n",
              "        await google.colab.output.renderOutput(dataTable, element);\n",
              "        const docLink = document.createElement('div');\n",
              "        docLink.innerHTML = docLinkHtml;\n",
              "        element.appendChild(docLink);\n",
              "      }\n",
              "    </script>\n",
              "  </div>\n",
              "\n",
              "\n",
              "    <div id=\"df-da2d5525-7073-4632-aac1-c1a960310f37\">\n",
              "      <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-da2d5525-7073-4632-aac1-c1a960310f37')\"\n",
              "                title=\"Suggest charts\"\n",
              "                style=\"display:none;\">\n",
              "\n",
              "<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
              "     width=\"24px\">\n",
              "    <g>\n",
              "        <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
              "    </g>\n",
              "</svg>\n",
              "      </button>\n",
              "\n",
              "<style>\n",
              "  .colab-df-quickchart {\n",
              "      --bg-color: #E8F0FE;\n",
              "      --fill-color: #1967D2;\n",
              "      --hover-bg-color: #E2EBFA;\n",
              "      --hover-fill-color: #174EA6;\n",
              "      --disabled-fill-color: #AAA;\n",
              "      --disabled-bg-color: #DDD;\n",
              "  }\n",
              "\n",
              "  [theme=dark] .colab-df-quickchart {\n",
              "      --bg-color: #3B4455;\n",
              "      --fill-color: #D2E3FC;\n",
              "      --hover-bg-color: #434B5C;\n",
              "      --hover-fill-color: #FFFFFF;\n",
              "      --disabled-bg-color: #3B4455;\n",
              "      --disabled-fill-color: #666;\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart {\n",
              "    background-color: var(--bg-color);\n",
              "    border: none;\n",
              "    border-radius: 50%;\n",
              "    cursor: pointer;\n",
              "    display: none;\n",
              "    fill: var(--fill-color);\n",
              "    height: 32px;\n",
              "    padding: 0;\n",
              "    width: 32px;\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart:hover {\n",
              "    background-color: var(--hover-bg-color);\n",
              "    box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "    fill: var(--button-hover-fill-color);\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart-complete:disabled,\n",
              "  .colab-df-quickchart-complete:disabled:hover {\n",
              "    background-color: var(--disabled-bg-color);\n",
              "    fill: var(--disabled-fill-color);\n",
              "    box-shadow: none;\n",
              "  }\n",
              "\n",
              "  .colab-df-spinner {\n",
              "    border: 2px solid var(--fill-color);\n",
              "    border-color: transparent;\n",
              "    border-bottom-color: var(--fill-color);\n",
              "    animation:\n",
              "      spin 1s steps(1) infinite;\n",
              "  }\n",
              "\n",
              "  @keyframes spin {\n",
              "    0% {\n",
              "      border-color: transparent;\n",
              "      border-bottom-color: var(--fill-color);\n",
              "      border-left-color: var(--fill-color);\n",
              "    }\n",
              "    20% {\n",
              "      border-color: transparent;\n",
              "      border-left-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "    }\n",
              "    30% {\n",
              "      border-color: transparent;\n",
              "      border-left-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "      border-right-color: var(--fill-color);\n",
              "    }\n",
              "    40% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "    }\n",
              "    60% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "    }\n",
              "    80% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "      border-bottom-color: var(--fill-color);\n",
              "    }\n",
              "    90% {\n",
              "      border-color: transparent;\n",
              "      border-bottom-color: var(--fill-color);\n",
              "    }\n",
              "  }\n",
              "</style>\n",
              "\n",
              "      <script>\n",
              "        async function quickchart(key) {\n",
              "          const quickchartButtonEl =\n",
              "            document.querySelector('#' + key + ' button');\n",
              "          quickchartButtonEl.disabled = true;  // To prevent multiple clicks.\n",
              "          quickchartButtonEl.classList.add('colab-df-spinner');\n",
              "          try {\n",
              "            const charts = await google.colab.kernel.invokeFunction(\n",
              "                'suggestCharts', [key], {});\n",
              "          } catch (error) {\n",
              "            console.error('Error during call to suggestCharts:', error);\n",
              "          }\n",
              "          quickchartButtonEl.classList.remove('colab-df-spinner');\n",
              "          quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
              "        }\n",
              "        (() => {\n",
              "          let quickchartButtonEl =\n",
              "            document.querySelector('#df-da2d5525-7073-4632-aac1-c1a960310f37 button');\n",
              "          quickchartButtonEl.style.display =\n",
              "            google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "        })();\n",
              "      </script>\n",
              "    </div>\n",
              "\n",
              "    </div>\n",
              "  </div>\n"
            ],
            "text/plain": [
              "               species_scientific_name        species_common_name\n",
              "0              Koelreuteria paniculata             Goldenraintree\n",
              "1                      Corylus colurna            Turkish Filbert\n",
              "2           Prunus serrulata 'Kwanzan'  Japanese Flowering Cherry\n",
              "3                   Prunus x yedoensis             Yoshino Cherry\n",
              "4                           Cornus mas           Cornelian Cherry\n",
              "5              Liriodendron tulipifera                 Tulip Tree\n",
              "6                            Malus sp.                  Crabapple\n",
              "7                      Quercus bicolor            Swamp White Oak\n",
              "8                    Quercus palustris                    Pin Oak\n",
              "9                        Crataegus sp.                   Hawthorn\n",
              "10             Styphnolobium japonicum               Scholar Tree\n",
              "11        Prunus virginiana 'Schubert'            Schubert Cherry\n",
              "12                         Cotinus sp.                 Smoke Tree\n",
              "13                        Acer ginnala                 Amur Maple\n",
              "14                     Amelanchier sp.               Serviceberry\n",
              "15                      Acer campestre                Hedge Maple\n",
              "16  Gleditsia triacanthos var. inermis                Honeylocust\n",
              "17                       Tilia cordata          Littleleaf Linden\n",
              "18               Platanus x acerifolia               London Plane\n",
              "19                      Prunus 'Okame'               Okame Cherry\n",
              "20                    Ulmus parvifolia                Chinese Elm\n",
              "21            Cercidiphyllum japonicum               Katsura Tree\n",
              "22              Fraxinus pennsylvanica                  Green Ash\n",
              "23                     Zelkova serrata           Japanese Zelkova\n",
              "24                      Acer truncatum             Shantung Maple\n",
              "25                 Celtis occidentalis                  Hackberry\n",
              "26                     Tilia americana            American Linden\n",
              "27                         Acer rubrum                  Red Maple\n",
              "28                       Ginkgo biloba                     Ginkgo\n",
              "29                  Fraxinus americana                  White Ash\n",
              "30                Carpinus caroliniana          American Hornbeam\n",
              "31                   Eucommia ulmoides          Hardy Rubber Tree\n",
              "32                       Quercus rubra           Northern Red Oak\n",
              "33                     Tilia tomentosa              Silver Linden\n",
              "34                   Prunus cerasifera            Purpleleaf Plum\n",
              "35                  Syringa reticulata        Japanese Tree Lilac\n",
              "36                  Quercus acutissima               Sawtooth Oak\n",
              "37                     Nyssa sylvatica                  Black Gum\n",
              "38                     Quercus phellos                 Willow Oak\n",
              "39                        Prunus padus        European Birdcherry\n",
              "40               Fraxinus 'Leprechaun'       Leprechaun Green Ash\n",
              "41                Lagerstroemia indica                Crapemyrtle\n",
              "42                   Maackia amurensis               Amur Maackia\n",
              "43                  Quercus imbricaria                Shingle Oak\n",
              "44                 Gymnocladus dioicus                 Coffeetree\n",
              "45                    Tilia x euchlora             Crimean Linden\n",
              "46                    Pyrus calleryana               Callery Pear\n",
              "47                       Quercus robur                English Oak\n",
              "48                     Ulmus americana               American Elm\n",
              "49                   Ostrya virginiana       American Hophornbeam\n",
              "50                    Carpinus betulus          European Hornbeam\n",
              "51        Metasequoia glyptostroboides               Dawn Redwood\n",
              "52                    Prunus sargentii             Sargent Cherry\n",
              "53                   Cercis canadensis             Eastern Redbud\n",
              "54           Quercus spp. 'Fastigiata'             Fastigiata Oak\n",
              "55             Liquidambar styraciflua                   Sweetgum\n",
              "56                  Taxodium distichum                Baldcypress"
            ]
          },
          "execution_count": 17,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "%%bigquery --project {PROJECT_ID}\n",
        "\n",
        "SELECT\n",
        "  species_scientific_name,\n",
        "  species_common_name\n",
        "FROM\n",
        "  `bigquery-public-data.new_york_trees.tree_species`\n",
        "WHERE\n",
        "  AI.GENERATE_INT(\n",
        "    ('What is the average life in years of this tree species?', species_scientific_name),\n",
        "    connection_id => 'us.test_connection',\n",
        "    endpoint => 'gemini-2.5-flash').result > 19"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "generate_int_md"
      },
      "source": [
        "### Using `AI.GENERATE_INT`: Filtering for tree species of specific average mature height\n",
        "\n",
        "[`AI.GENERATE_INT`](https://cloud.google.com/bigquery/docs/reference/standard-sql/bigqueryml-syntax-ai-generate-int) is similar to [`AI.GENERATE_DOUBLE`](https://cloud.google.com/bigquery/docs/reference/standard-sql/bigqueryml-syntax-ai-generate-double), except that it returns data of type `INT64`, instead of `FLOAT64`. Let's use it to return tree species with an average mature height of 10-20 meters.\n"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "generate_int_code"
      },
      "outputs": [
        {
          "data": {
            "application/vnd.jupyter.widget-view+json": {
              "model_id": "9cdc5a2aa67d40149613fbc2a1fac655",
              "version_major": 2,
              "version_minor": 0
            },
            "text/plain": [
              "Query is running:   0%|          |"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "data": {
            "application/vnd.jupyter.widget-view+json": {
              "model_id": "b9038840bf8545899b4b24d9ab57d629",
              "version_major": 2,
              "version_minor": 0
            },
            "text/plain": [
              "Downloading:   0%|          |"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "data": {
            "application/vnd.google.colaboratory.intrinsic+json": {
              "summary": "{\n  \"name\": \"get_ipython()\",\n  \"rows\": 22,\n  \"fields\": [\n    {\n      \"column\": \"species_scientific_name\",\n      \"properties\": {\n        \"dtype\": \"string\",\n        \"num_unique_values\": 22,\n        \"samples\": [\n          \"Koelreuteria paniculata\",\n          \"Maackia amurensis\",\n          \"Cercidiphyllum japonicum\"\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"species_common_name\",\n      \"properties\": {\n        \"dtype\": \"string\",\n        \"num_unique_values\": 22,\n        \"samples\": [\n          \"Goldenraintree\",\n          \"Amur Maackia\",\n          \"Katsura Tree\"\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    }\n  ]\n}",
              "type": "dataframe"
            },
            "text/html": [
              "\n",
              "  <div id=\"df-098a7b1c-ae77-4e8d-9c8c-8e665b0fb707\" class=\"colab-df-container\">\n",
              "    <div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>species_scientific_name</th>\n",
              "      <th>species_common_name</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>Koelreuteria paniculata</td>\n",
              "      <td>Goldenraintree</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>Corylus colurna</td>\n",
              "      <td>Turkish Filbert</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>Carpinus betulus</td>\n",
              "      <td>European Hornbeam</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>Celtis occidentalis</td>\n",
              "      <td>Hackberry</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>Fraxinus americana</td>\n",
              "      <td>White Ash</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>5</th>\n",
              "      <td>Eucommia ulmoides</td>\n",
              "      <td>Hardy Rubber Tree</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>6</th>\n",
              "      <td>Nyssa sylvatica</td>\n",
              "      <td>Black Gum</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>7</th>\n",
              "      <td>Ulmus parvifolia</td>\n",
              "      <td>Chinese Elm</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>8</th>\n",
              "      <td>Cercidiphyllum japonicum</td>\n",
              "      <td>Katsura Tree</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>9</th>\n",
              "      <td>Fraxinus pennsylvanica</td>\n",
              "      <td>Green Ash</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>10</th>\n",
              "      <td>Quercus spp. 'Fastigiata'</td>\n",
              "      <td>Fastigiata Oak</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>11</th>\n",
              "      <td>Acer campestre</td>\n",
              "      <td>Hedge Maple</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>12</th>\n",
              "      <td>Prunus padus</td>\n",
              "      <td>European Birdcherry</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>13</th>\n",
              "      <td>Maackia amurensis</td>\n",
              "      <td>Amur Maackia</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>14</th>\n",
              "      <td>Quercus imbricaria</td>\n",
              "      <td>Shingle Oak</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>15</th>\n",
              "      <td>Gymnocladus dioicus</td>\n",
              "      <td>Coffeetree</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>16</th>\n",
              "      <td>Tilia x euchlora</td>\n",
              "      <td>Crimean Linden</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>17</th>\n",
              "      <td>Pyrus calleryana</td>\n",
              "      <td>Callery Pear</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>18</th>\n",
              "      <td>Quercus bicolor</td>\n",
              "      <td>Swamp White Oak</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>19</th>\n",
              "      <td>Quercus palustris</td>\n",
              "      <td>Pin Oak</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>20</th>\n",
              "      <td>Styphnolobium japonicum</td>\n",
              "      <td>Scholar Tree</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>21</th>\n",
              "      <td>Prunus x yedoensis</td>\n",
              "      <td>Yoshino Cherry</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>\n",
              "    <div class=\"colab-df-buttons\">\n",
              "\n",
              "  <div class=\"colab-df-container\">\n",
              "    <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-098a7b1c-ae77-4e8d-9c8c-8e665b0fb707')\"\n",
              "            title=\"Convert this dataframe to an interactive table.\"\n",
              "            style=\"display:none;\">\n",
              "\n",
              "  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
              "    <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
              "  </svg>\n",
              "    </button>\n",
              "\n",
              "  <style>\n",
              "    .colab-df-container {\n",
              "      display:flex;\n",
              "      gap: 12px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert {\n",
              "      background-color: #E8F0FE;\n",
              "      border: none;\n",
              "      border-radius: 50%;\n",
              "      cursor: pointer;\n",
              "      display: none;\n",
              "      fill: #1967D2;\n",
              "      height: 32px;\n",
              "      padding: 0 0 0 0;\n",
              "      width: 32px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert:hover {\n",
              "      background-color: #E2EBFA;\n",
              "      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "      fill: #174EA6;\n",
              "    }\n",
              "\n",
              "    .colab-df-buttons div {\n",
              "      margin-bottom: 4px;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert {\n",
              "      background-color: #3B4455;\n",
              "      fill: #D2E3FC;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert:hover {\n",
              "      background-color: #434B5C;\n",
              "      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
              "      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
              "      fill: #FFFFFF;\n",
              "    }\n",
              "  </style>\n",
              "\n",
              "    <script>\n",
              "      const buttonEl =\n",
              "        document.querySelector('#df-098a7b1c-ae77-4e8d-9c8c-8e665b0fb707 button.colab-df-convert');\n",
              "      buttonEl.style.display =\n",
              "        google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "\n",
              "      async function convertToInteractive(key) {\n",
              "        const element = document.querySelector('#df-098a7b1c-ae77-4e8d-9c8c-8e665b0fb707');\n",
              "        const dataTable =\n",
              "          await google.colab.kernel.invokeFunction('convertToInteractive',\n",
              "                                                    [key], {});\n",
              "        if (!dataTable) return;\n",
              "\n",
              "        const docLinkHtml = 'Like what you see? Visit the ' +\n",
              "          '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
              "          + ' to learn more about interactive tables.';\n",
              "        element.innerHTML = '';\n",
              "        dataTable['output_type'] = 'display_data';\n",
              "        await google.colab.output.renderOutput(dataTable, element);\n",
              "        const docLink = document.createElement('div');\n",
              "        docLink.innerHTML = docLinkHtml;\n",
              "        element.appendChild(docLink);\n",
              "      }\n",
              "    </script>\n",
              "  </div>\n",
              "\n",
              "\n",
              "    <div id=\"df-44d88c68-8df8-4867-b74e-ecd8403091fb\">\n",
              "      <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-44d88c68-8df8-4867-b74e-ecd8403091fb')\"\n",
              "                title=\"Suggest charts\"\n",
              "                style=\"display:none;\">\n",
              "\n",
              "<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
              "     width=\"24px\">\n",
              "    <g>\n",
              "        <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
              "    </g>\n",
              "</svg>\n",
              "      </button>\n",
              "\n",
              "<style>\n",
              "  .colab-df-quickchart {\n",
              "      --bg-color: #E8F0FE;\n",
              "      --fill-color: #1967D2;\n",
              "      --hover-bg-color: #E2EBFA;\n",
              "      --hover-fill-color: #174EA6;\n",
              "      --disabled-fill-color: #AAA;\n",
              "      --disabled-bg-color: #DDD;\n",
              "  }\n",
              "\n",
              "  [theme=dark] .colab-df-quickchart {\n",
              "      --bg-color: #3B4455;\n",
              "      --fill-color: #D2E3FC;\n",
              "      --hover-bg-color: #434B5C;\n",
              "      --hover-fill-color: #FFFFFF;\n",
              "      --disabled-bg-color: #3B4455;\n",
              "      --disabled-fill-color: #666;\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart {\n",
              "    background-color: var(--bg-color);\n",
              "    border: none;\n",
              "    border-radius: 50%;\n",
              "    cursor: pointer;\n",
              "    display: none;\n",
              "    fill: var(--fill-color);\n",
              "    height: 32px;\n",
              "    padding: 0;\n",
              "    width: 32px;\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart:hover {\n",
              "    background-color: var(--hover-bg-color);\n",
              "    box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "    fill: var(--button-hover-fill-color);\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart-complete:disabled,\n",
              "  .colab-df-quickchart-complete:disabled:hover {\n",
              "    background-color: var(--disabled-bg-color);\n",
              "    fill: var(--disabled-fill-color);\n",
              "    box-shadow: none;\n",
              "  }\n",
              "\n",
              "  .colab-df-spinner {\n",
              "    border: 2px solid var(--fill-color);\n",
              "    border-color: transparent;\n",
              "    border-bottom-color: var(--fill-color);\n",
              "    animation:\n",
              "      spin 1s steps(1) infinite;\n",
              "  }\n",
              "\n",
              "  @keyframes spin {\n",
              "    0% {\n",
              "      border-color: transparent;\n",
              "      border-bottom-color: var(--fill-color);\n",
              "      border-left-color: var(--fill-color);\n",
              "    }\n",
              "    20% {\n",
              "      border-color: transparent;\n",
              "      border-left-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "    }\n",
              "    30% {\n",
              "      border-color: transparent;\n",
              "      border-left-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "      border-right-color: var(--fill-color);\n",
              "    }\n",
              "    40% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "    }\n",
              "    60% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "    }\n",
              "    80% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "      border-bottom-color: var(--fill-color);\n",
              "    }\n",
              "    90% {\n",
              "      border-color: transparent;\n",
              "      border-bottom-color: var(--fill-color);\n",
              "    }\n",
              "  }\n",
              "</style>\n",
              "\n",
              "      <script>\n",
              "        async function quickchart(key) {\n",
              "          const quickchartButtonEl =\n",
              "            document.querySelector('#' + key + ' button');\n",
              "          quickchartButtonEl.disabled = true;  // To prevent multiple clicks.\n",
              "          quickchartButtonEl.classList.add('colab-df-spinner');\n",
              "          try {\n",
              "            const charts = await google.colab.kernel.invokeFunction(\n",
              "                'suggestCharts', [key], {});\n",
              "          } catch (error) {\n",
              "            console.error('Error during call to suggestCharts:', error);\n",
              "          }\n",
              "          quickchartButtonEl.classList.remove('colab-df-spinner');\n",
              "          quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
              "        }\n",
              "        (() => {\n",
              "          let quickchartButtonEl =\n",
              "            document.querySelector('#df-44d88c68-8df8-4867-b74e-ecd8403091fb button');\n",
              "          quickchartButtonEl.style.display =\n",
              "            google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "        })();\n",
              "      </script>\n",
              "    </div>\n",
              "\n",
              "    </div>\n",
              "  </div>\n"
            ],
            "text/plain": [
              "      species_scientific_name  species_common_name\n",
              "0     Koelreuteria paniculata       Goldenraintree\n",
              "1             Corylus colurna      Turkish Filbert\n",
              "2            Carpinus betulus    European Hornbeam\n",
              "3         Celtis occidentalis            Hackberry\n",
              "4          Fraxinus americana            White Ash\n",
              "5           Eucommia ulmoides    Hardy Rubber Tree\n",
              "6             Nyssa sylvatica            Black Gum\n",
              "7            Ulmus parvifolia          Chinese Elm\n",
              "8    Cercidiphyllum japonicum         Katsura Tree\n",
              "9      Fraxinus pennsylvanica            Green Ash\n",
              "10  Quercus spp. 'Fastigiata'       Fastigiata Oak\n",
              "11             Acer campestre          Hedge Maple\n",
              "12               Prunus padus  European Birdcherry\n",
              "13          Maackia amurensis         Amur Maackia\n",
              "14         Quercus imbricaria          Shingle Oak\n",
              "15        Gymnocladus dioicus           Coffeetree\n",
              "16           Tilia x euchlora       Crimean Linden\n",
              "17           Pyrus calleryana         Callery Pear\n",
              "18            Quercus bicolor      Swamp White Oak\n",
              "19          Quercus palustris              Pin Oak\n",
              "20    Styphnolobium japonicum         Scholar Tree\n",
              "21         Prunus x yedoensis       Yoshino Cherry"
            ]
          },
          "execution_count": 18,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "%%bigquery --project {PROJECT_ID}\n",
        "\n",
        "SELECT\n",
        "  species_scientific_name,\n",
        "  species_common_name\n",
        "FROM\n",
        "  `bigquery-public-data.new_york_trees.tree_species`\n",
        "WHERE\n",
        "  AI.GENERATE_DOUBLE(\n",
        "    ('What is the average height in meters of this tree species at full maturity?', species_scientific_name),\n",
        "    connection_id => 'us.test_connection',\n",
        "    endpoint => 'gemini-2.5-flash').result BETWEEN 10 AND 20"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "LXSfuNKs521-"
      },
      "source": [
        "You can also combine `AI.GENERATE_DOUBLE`, `AI.GENERATE_INT`, and `AI.GENERATE_BOOL` scalar functions within one query. Here's an example combining the AI filters of the last three queries into one `WHERE` clause:"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "9mpFmVGG5yrG"
      },
      "outputs": [
        {
          "data": {
            "application/vnd.jupyter.widget-view+json": {
              "model_id": "7a02ae15c38741e0b855ae401fc7bbbd",
              "version_major": 2,
              "version_minor": 0
            },
            "text/plain": [
              "Query is running:   0%|          |"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "data": {
            "application/vnd.jupyter.widget-view+json": {
              "model_id": "3f6e373189f045269f1e8bc1b15ff5e2",
              "version_major": 2,
              "version_minor": 0
            },
            "text/plain": [
              "Downloading:   0%|          |"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "data": {
            "application/vnd.google.colaboratory.intrinsic+json": {
              "summary": "{\n  \"name\": \"get_ipython()\",\n  \"rows\": 15,\n  \"fields\": [\n    {\n      \"column\": \"species_scientific_name\",\n      \"properties\": {\n        \"dtype\": \"string\",\n        \"num_unique_values\": 15,\n        \"samples\": [\n          \"Acer truncatum\",\n          \"Eucommia ulmoides\",\n          \"Koelreuteria paniculata\"\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"species_common_name\",\n      \"properties\": {\n        \"dtype\": \"string\",\n        \"num_unique_values\": 15,\n        \"samples\": [\n          \"Shantung Maple\",\n          \"Hardy Rubber Tree\",\n          \"Goldenraintree\"\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    }\n  ]\n}",
              "type": "dataframe"
            },
            "text/html": [
              "\n",
              "  <div id=\"df-f6a79317-28fd-4b52-b8c4-40ef5d1bffec\" class=\"colab-df-container\">\n",
              "    <div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>species_scientific_name</th>\n",
              "      <th>species_common_name</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>Koelreuteria paniculata</td>\n",
              "      <td>Goldenraintree</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>Corylus colurna</td>\n",
              "      <td>Turkish Filbert</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>Ulmus parvifolia</td>\n",
              "      <td>Chinese Elm</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>Fraxinus pennsylvanica</td>\n",
              "      <td>Green Ash</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>Zelkova serrata</td>\n",
              "      <td>Japanese Zelkova</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>5</th>\n",
              "      <td>Quercus spp. 'Fastigiata'</td>\n",
              "      <td>Fastigiata Oak</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>6</th>\n",
              "      <td>Acer campestre</td>\n",
              "      <td>Hedge Maple</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>7</th>\n",
              "      <td>Tilia cordata</td>\n",
              "      <td>Littleleaf Linden</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>8</th>\n",
              "      <td>Styphnolobium japonicum</td>\n",
              "      <td>Scholar Tree</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>9</th>\n",
              "      <td>Acer truncatum</td>\n",
              "      <td>Shantung Maple</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>10</th>\n",
              "      <td>Celtis occidentalis</td>\n",
              "      <td>Hackberry</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>11</th>\n",
              "      <td>Eucommia ulmoides</td>\n",
              "      <td>Hardy Rubber Tree</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>12</th>\n",
              "      <td>Quercus imbricaria</td>\n",
              "      <td>Shingle Oak</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>13</th>\n",
              "      <td>Gymnocladus dioicus</td>\n",
              "      <td>Coffeetree</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>14</th>\n",
              "      <td>Tilia x euchlora</td>\n",
              "      <td>Crimean Linden</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>\n",
              "    <div class=\"colab-df-buttons\">\n",
              "\n",
              "  <div class=\"colab-df-container\">\n",
              "    <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-f6a79317-28fd-4b52-b8c4-40ef5d1bffec')\"\n",
              "            title=\"Convert this dataframe to an interactive table.\"\n",
              "            style=\"display:none;\">\n",
              "\n",
              "  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
              "    <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
              "  </svg>\n",
              "    </button>\n",
              "\n",
              "  <style>\n",
              "    .colab-df-container {\n",
              "      display:flex;\n",
              "      gap: 12px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert {\n",
              "      background-color: #E8F0FE;\n",
              "      border: none;\n",
              "      border-radius: 50%;\n",
              "      cursor: pointer;\n",
              "      display: none;\n",
              "      fill: #1967D2;\n",
              "      height: 32px;\n",
              "      padding: 0 0 0 0;\n",
              "      width: 32px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert:hover {\n",
              "      background-color: #E2EBFA;\n",
              "      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "      fill: #174EA6;\n",
              "    }\n",
              "\n",
              "    .colab-df-buttons div {\n",
              "      margin-bottom: 4px;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert {\n",
              "      background-color: #3B4455;\n",
              "      fill: #D2E3FC;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert:hover {\n",
              "      background-color: #434B5C;\n",
              "      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
              "      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
              "      fill: #FFFFFF;\n",
              "    }\n",
              "  </style>\n",
              "\n",
              "    <script>\n",
              "      const buttonEl =\n",
              "        document.querySelector('#df-f6a79317-28fd-4b52-b8c4-40ef5d1bffec button.colab-df-convert');\n",
              "      buttonEl.style.display =\n",
              "        google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "\n",
              "      async function convertToInteractive(key) {\n",
              "        const element = document.querySelector('#df-f6a79317-28fd-4b52-b8c4-40ef5d1bffec');\n",
              "        const dataTable =\n",
              "          await google.colab.kernel.invokeFunction('convertToInteractive',\n",
              "                                                    [key], {});\n",
              "        if (!dataTable) return;\n",
              "\n",
              "        const docLinkHtml = 'Like what you see? Visit the ' +\n",
              "          '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
              "          + ' to learn more about interactive tables.';\n",
              "        element.innerHTML = '';\n",
              "        dataTable['output_type'] = 'display_data';\n",
              "        await google.colab.output.renderOutput(dataTable, element);\n",
              "        const docLink = document.createElement('div');\n",
              "        docLink.innerHTML = docLinkHtml;\n",
              "        element.appendChild(docLink);\n",
              "      }\n",
              "    </script>\n",
              "  </div>\n",
              "\n",
              "\n",
              "    <div id=\"df-4d8a58a4-0eff-49f5-92ba-a29e351f01f5\">\n",
              "      <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-4d8a58a4-0eff-49f5-92ba-a29e351f01f5')\"\n",
              "                title=\"Suggest charts\"\n",
              "                style=\"display:none;\">\n",
              "\n",
              "<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
              "     width=\"24px\">\n",
              "    <g>\n",
              "        <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
              "    </g>\n",
              "</svg>\n",
              "      </button>\n",
              "\n",
              "<style>\n",
              "  .colab-df-quickchart {\n",
              "      --bg-color: #E8F0FE;\n",
              "      --fill-color: #1967D2;\n",
              "      --hover-bg-color: #E2EBFA;\n",
              "      --hover-fill-color: #174EA6;\n",
              "      --disabled-fill-color: #AAA;\n",
              "      --disabled-bg-color: #DDD;\n",
              "  }\n",
              "\n",
              "  [theme=dark] .colab-df-quickchart {\n",
              "      --bg-color: #3B4455;\n",
              "      --fill-color: #D2E3FC;\n",
              "      --hover-bg-color: #434B5C;\n",
              "      --hover-fill-color: #FFFFFF;\n",
              "      --disabled-bg-color: #3B4455;\n",
              "      --disabled-fill-color: #666;\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart {\n",
              "    background-color: var(--bg-color);\n",
              "    border: none;\n",
              "    border-radius: 50%;\n",
              "    cursor: pointer;\n",
              "    display: none;\n",
              "    fill: var(--fill-color);\n",
              "    height: 32px;\n",
              "    padding: 0;\n",
              "    width: 32px;\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart:hover {\n",
              "    background-color: var(--hover-bg-color);\n",
              "    box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "    fill: var(--button-hover-fill-color);\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart-complete:disabled,\n",
              "  .colab-df-quickchart-complete:disabled:hover {\n",
              "    background-color: var(--disabled-bg-color);\n",
              "    fill: var(--disabled-fill-color);\n",
              "    box-shadow: none;\n",
              "  }\n",
              "\n",
              "  .colab-df-spinner {\n",
              "    border: 2px solid var(--fill-color);\n",
              "    border-color: transparent;\n",
              "    border-bottom-color: var(--fill-color);\n",
              "    animation:\n",
              "      spin 1s steps(1) infinite;\n",
              "  }\n",
              "\n",
              "  @keyframes spin {\n",
              "    0% {\n",
              "      border-color: transparent;\n",
              "      border-bottom-color: var(--fill-color);\n",
              "      border-left-color: var(--fill-color);\n",
              "    }\n",
              "    20% {\n",
              "      border-color: transparent;\n",
              "      border-left-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "    }\n",
              "    30% {\n",
              "      border-color: transparent;\n",
              "      border-left-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "      border-right-color: var(--fill-color);\n",
              "    }\n",
              "    40% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "    }\n",
              "    60% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "    }\n",
              "    80% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "      border-bottom-color: var(--fill-color);\n",
              "    }\n",
              "    90% {\n",
              "      border-color: transparent;\n",
              "      border-bottom-color: var(--fill-color);\n",
              "    }\n",
              "  }\n",
              "</style>\n",
              "\n",
              "      <script>\n",
              "        async function quickchart(key) {\n",
              "          const quickchartButtonEl =\n",
              "            document.querySelector('#' + key + ' button');\n",
              "          quickchartButtonEl.disabled = true;  // To prevent multiple clicks.\n",
              "          quickchartButtonEl.classList.add('colab-df-spinner');\n",
              "          try {\n",
              "            const charts = await google.colab.kernel.invokeFunction(\n",
              "                'suggestCharts', [key], {});\n",
              "          } catch (error) {\n",
              "            console.error('Error during call to suggestCharts:', error);\n",
              "          }\n",
              "          quickchartButtonEl.classList.remove('colab-df-spinner');\n",
              "          quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
              "        }\n",
              "        (() => {\n",
              "          let quickchartButtonEl =\n",
              "            document.querySelector('#df-4d8a58a4-0eff-49f5-92ba-a29e351f01f5 button');\n",
              "          quickchartButtonEl.style.display =\n",
              "            google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "        })();\n",
              "      </script>\n",
              "    </div>\n",
              "\n",
              "    </div>\n",
              "  </div>\n"
            ],
            "text/plain": [
              "      species_scientific_name species_common_name\n",
              "0     Koelreuteria paniculata      Goldenraintree\n",
              "1             Corylus colurna     Turkish Filbert\n",
              "2            Ulmus parvifolia         Chinese Elm\n",
              "3      Fraxinus pennsylvanica           Green Ash\n",
              "4             Zelkova serrata    Japanese Zelkova\n",
              "5   Quercus spp. 'Fastigiata'      Fastigiata Oak\n",
              "6              Acer campestre         Hedge Maple\n",
              "7               Tilia cordata   Littleleaf Linden\n",
              "8     Styphnolobium japonicum        Scholar Tree\n",
              "9              Acer truncatum      Shantung Maple\n",
              "10        Celtis occidentalis           Hackberry\n",
              "11          Eucommia ulmoides   Hardy Rubber Tree\n",
              "12         Quercus imbricaria         Shingle Oak\n",
              "13        Gymnocladus dioicus          Coffeetree\n",
              "14           Tilia x euchlora      Crimean Linden"
            ]
          },
          "execution_count": 19,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "%%bigquery --project {PROJECT_ID}\n",
        "\n",
        "SELECT\n",
        "  species_scientific_name,\n",
        "  species_common_name\n",
        "FROM\n",
        "  `bigquery-public-data.new_york_trees.tree_species`\n",
        "WHERE\n",
        "  AI.GENERATE_DOUBLE(\n",
        "    ('What is the average height in meters of this tree species at full maturity?', species_scientific_name),\n",
        "    connection_id => 'us.test_connection',\n",
        "    endpoint => 'gemini-2.5-flash').result BETWEEN 10 AND 20 AND\n",
        "  AI.GENERATE_INT(\n",
        "    ('What is the average life in years of this tree species?', species_scientific_name),\n",
        "    connection_id => 'us.test_connection',\n",
        "    endpoint => 'gemini-2.5-flash').result > 19 AND\n",
        "  AI.GENERATE_BOOL(\n",
        "    ('Is this tree species drought tolerant?', species_scientific_name),\n",
        "    connection_id => 'us.test_connection',\n",
        "    endpoint => 'gemini-2.5-flash').result = true"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "forecast_md"
      },
      "source": [
        "---\n",
        "\n",
        "## Forecast time series with `AI.FORECAST`\n",
        "\n",
        "The Google Research [`TimesFM`](https://cloud.google.com/bigquery/docs/timesfm-model) model is a foundation model for time-series forecasting that has been pre-trained on billions of time-points from many real-world datasets, so you can apply it to new forecasting datasets across many domains.\n",
        "\n",
        "The [`AI.FORECAST`](https://cloud.google.com/bigquery/docs/reference/standard-sql/bigqueryml-syntax-ai-forecast) function in BigQuery leverages the model to provide high-quality time series forecasting without the need to create and train your own model.\n",
        "\n",
        "For this example, we'll use the `bigquery-public-data.san_francisco_bikeshare.bikeshare_trips` data to forecast hourly bikeshare trips by subscriber type."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "forecast_code"
      },
      "outputs": [
        {
          "data": {
            "application/vnd.jupyter.widget-view+json": {
              "model_id": "831d15a9f0f549ddb79a622d9b081906",
              "version_major": 2,
              "version_minor": 0
            },
            "text/plain": [
              "Query is running:   0%|          |"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "data": {
            "application/vnd.jupyter.widget-view+json": {
              "model_id": "03cb819e300d4bd384d4701a1b4dc32a",
              "version_major": 2,
              "version_minor": 0
            },
            "text/plain": [
              "Downloading:   0%|          |"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        }
      ],
      "source": [
        "%%bigquery forecast_results --project {PROJECT_ID}\n",
        "\n",
        "SELECT *\n",
        "FROM\n",
        "  AI.FORECAST(\n",
        "    (\n",
        "      SELECT\n",
        "        TIMESTAMP_TRUNC(start_date, HOUR) as trip_hour,\n",
        "        subscriber_type,\n",
        "        COUNT(*) as num_trips\n",
        "      FROM `bigquery-public-data.san_francisco_bikeshare.bikeshare_trips`\n",
        "      WHERE start_date >= TIMESTAMP('2018-01-01')\n",
        "      GROUP BY TIMESTAMP_TRUNC(start_date, HOUR), subscriber_type\n",
        "    ),\n",
        "    horizon => 720,\n",
        "    confidence_level => 0.95,\n",
        "    timestamp_col => 'trip_hour',\n",
        "    data_col => 'num_trips',\n",
        "    id_cols => ['subscriber_type']);"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "forecast_text_md"
      },
      "source": "The results of this query were saved as a pandas DataFrame. Running the next cell will display the DataFrame, including the forecasted number of trips by subscriber type (annually/monthly subscriber, or short-term customer), for the next 720 hours (30 days), along with the prediction interval."
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "9rkQpI4KQpB5"
      },
      "outputs": [
        {
          "data": {
            "application/vnd.google.colaboratory.intrinsic+json": {
              "summary": "{\n  \"name\": \"forecast_results\",\n  \"rows\": 1440,\n  \"fields\": [\n    {\n      \"column\": \"subscriber_type\",\n      \"properties\": {\n        \"dtype\": \"category\",\n        \"num_unique_values\": 2,\n        \"samples\": [\n          \"Customer\",\n          \"Subscriber\"\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"forecast_timestamp\",\n      \"properties\": {\n        \"dtype\": \"date\",\n        \"min\": \"2018-05-01 00:00:00+00:00\",\n        \"max\": \"2018-05-30 23:00:00+00:00\",\n        \"num_unique_values\": 720,\n        \"samples\": [\n          \"2018-05-15 04:00:00+00:00\",\n          \"2018-05-13 02:00:00+00:00\"\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"forecast_value\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 147.428295034109,\n        \"min\": -37.251434326171875,\n        \"max\": 737.4773559570312,\n        \"num_unique_values\": 1440,\n        \"samples\": [\n          23.248031616210938,\n          62.23030090332031\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"confidence_level\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 2.5432939679420995e-14,\n        \"min\": 0.95,\n        \"max\": 0.95,\n        \"num_unique_values\": 1,\n        \"samples\": [\n          0.95\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"prediction_interval_lower_bound\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 146.9577357599613,\n        \"min\": -487.65658100617054,\n        \"max\": 562.97920778508,\n        \"num_unique_values\": 1440,\n        \"samples\": [\n          -109.52125535672451\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"prediction_interval_upper_bound\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 271.38121316226966,\n        \"min\": -3.642456582900074,\n        \"max\": 1318.3723750147296,\n        \"num_unique_values\": 1440,\n        \"samples\": [\n          156.01731858914638\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"ai_forecast_status\",\n      \"properties\": {\n        \"dtype\": \"object\",\n        \"num_unique_values\": 1,\n        \"samples\": [\n          \"\"\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    }\n  ]\n}",
              "type": "dataframe",
              "variable_name": "forecast_results"
            },
            "text/html": [
              "\n",
              "  <div id=\"df-559a1bec-d129-4934-8442-c6ad35b840ab\" class=\"colab-df-container\">\n",
              "    <div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>subscriber_type</th>\n",
              "      <th>forecast_timestamp</th>\n",
              "      <th>forecast_value</th>\n",
              "      <th>confidence_level</th>\n",
              "      <th>prediction_interval_lower_bound</th>\n",
              "      <th>prediction_interval_upper_bound</th>\n",
              "      <th>ai_forecast_status</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>Subscriber</td>\n",
              "      <td>2018-05-01 00:00:00+00:00</td>\n",
              "      <td>43.450790</td>\n",
              "      <td>0.95</td>\n",
              "      <td>36.525672</td>\n",
              "      <td>50.375909</td>\n",
              "      <td></td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>Subscriber</td>\n",
              "      <td>2018-05-01 01:00:00+00:00</td>\n",
              "      <td>29.705200</td>\n",
              "      <td>0.95</td>\n",
              "      <td>7.928018</td>\n",
              "      <td>51.482383</td>\n",
              "      <td></td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>Subscriber</td>\n",
              "      <td>2018-05-01 02:00:00+00:00</td>\n",
              "      <td>-0.492950</td>\n",
              "      <td>0.95</td>\n",
              "      <td>-12.301750</td>\n",
              "      <td>11.315850</td>\n",
              "      <td></td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>Subscriber</td>\n",
              "      <td>2018-05-01 03:00:00+00:00</td>\n",
              "      <td>10.734818</td>\n",
              "      <td>0.95</td>\n",
              "      <td>-10.788396</td>\n",
              "      <td>32.258031</td>\n",
              "      <td></td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>Subscriber</td>\n",
              "      <td>2018-05-01 04:00:00+00:00</td>\n",
              "      <td>-23.490402</td>\n",
              "      <td>0.95</td>\n",
              "      <td>-43.338348</td>\n",
              "      <td>-3.642457</td>\n",
              "      <td></td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>\n",
              "    <div class=\"colab-df-buttons\">\n",
              "\n",
              "  <div class=\"colab-df-container\">\n",
              "    <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-559a1bec-d129-4934-8442-c6ad35b840ab')\"\n",
              "            title=\"Convert this dataframe to an interactive table.\"\n",
              "            style=\"display:none;\">\n",
              "\n",
              "  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
              "    <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
              "  </svg>\n",
              "    </button>\n",
              "\n",
              "  <style>\n",
              "    .colab-df-container {\n",
              "      display:flex;\n",
              "      gap: 12px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert {\n",
              "      background-color: #E8F0FE;\n",
              "      border: none;\n",
              "      border-radius: 50%;\n",
              "      cursor: pointer;\n",
              "      display: none;\n",
              "      fill: #1967D2;\n",
              "      height: 32px;\n",
              "      padding: 0 0 0 0;\n",
              "      width: 32px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert:hover {\n",
              "      background-color: #E2EBFA;\n",
              "      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "      fill: #174EA6;\n",
              "    }\n",
              "\n",
              "    .colab-df-buttons div {\n",
              "      margin-bottom: 4px;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert {\n",
              "      background-color: #3B4455;\n",
              "      fill: #D2E3FC;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert:hover {\n",
              "      background-color: #434B5C;\n",
              "      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
              "      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
              "      fill: #FFFFFF;\n",
              "    }\n",
              "  </style>\n",
              "\n",
              "    <script>\n",
              "      const buttonEl =\n",
              "        document.querySelector('#df-559a1bec-d129-4934-8442-c6ad35b840ab button.colab-df-convert');\n",
              "      buttonEl.style.display =\n",
              "        google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "\n",
              "      async function convertToInteractive(key) {\n",
              "        const element = document.querySelector('#df-559a1bec-d129-4934-8442-c6ad35b840ab');\n",
              "        const dataTable =\n",
              "          await google.colab.kernel.invokeFunction('convertToInteractive',\n",
              "                                                    [key], {});\n",
              "        if (!dataTable) return;\n",
              "\n",
              "        const docLinkHtml = 'Like what you see? Visit the ' +\n",
              "          '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
              "          + ' to learn more about interactive tables.';\n",
              "        element.innerHTML = '';\n",
              "        dataTable['output_type'] = 'display_data';\n",
              "        await google.colab.output.renderOutput(dataTable, element);\n",
              "        const docLink = document.createElement('div');\n",
              "        docLink.innerHTML = docLinkHtml;\n",
              "        element.appendChild(docLink);\n",
              "      }\n",
              "    </script>\n",
              "  </div>\n",
              "\n",
              "\n",
              "    <div id=\"df-8018d6e6-41e5-46f5-9f05-4aefd10cffd3\">\n",
              "      <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-8018d6e6-41e5-46f5-9f05-4aefd10cffd3')\"\n",
              "                title=\"Suggest charts\"\n",
              "                style=\"display:none;\">\n",
              "\n",
              "<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
              "     width=\"24px\">\n",
              "    <g>\n",
              "        <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
              "    </g>\n",
              "</svg>\n",
              "      </button>\n",
              "\n",
              "<style>\n",
              "  .colab-df-quickchart {\n",
              "      --bg-color: #E8F0FE;\n",
              "      --fill-color: #1967D2;\n",
              "      --hover-bg-color: #E2EBFA;\n",
              "      --hover-fill-color: #174EA6;\n",
              "      --disabled-fill-color: #AAA;\n",
              "      --disabled-bg-color: #DDD;\n",
              "  }\n",
              "\n",
              "  [theme=dark] .colab-df-quickchart {\n",
              "      --bg-color: #3B4455;\n",
              "      --fill-color: #D2E3FC;\n",
              "      --hover-bg-color: #434B5C;\n",
              "      --hover-fill-color: #FFFFFF;\n",
              "      --disabled-bg-color: #3B4455;\n",
              "      --disabled-fill-color: #666;\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart {\n",
              "    background-color: var(--bg-color);\n",
              "    border: none;\n",
              "    border-radius: 50%;\n",
              "    cursor: pointer;\n",
              "    display: none;\n",
              "    fill: var(--fill-color);\n",
              "    height: 32px;\n",
              "    padding: 0;\n",
              "    width: 32px;\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart:hover {\n",
              "    background-color: var(--hover-bg-color);\n",
              "    box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "    fill: var(--button-hover-fill-color);\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart-complete:disabled,\n",
              "  .colab-df-quickchart-complete:disabled:hover {\n",
              "    background-color: var(--disabled-bg-color);\n",
              "    fill: var(--disabled-fill-color);\n",
              "    box-shadow: none;\n",
              "  }\n",
              "\n",
              "  .colab-df-spinner {\n",
              "    border: 2px solid var(--fill-color);\n",
              "    border-color: transparent;\n",
              "    border-bottom-color: var(--fill-color);\n",
              "    animation:\n",
              "      spin 1s steps(1) infinite;\n",
              "  }\n",
              "\n",
              "  @keyframes spin {\n",
              "    0% {\n",
              "      border-color: transparent;\n",
              "      border-bottom-color: var(--fill-color);\n",
              "      border-left-color: var(--fill-color);\n",
              "    }\n",
              "    20% {\n",
              "      border-color: transparent;\n",
              "      border-left-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "    }\n",
              "    30% {\n",
              "      border-color: transparent;\n",
              "      border-left-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "      border-right-color: var(--fill-color);\n",
              "    }\n",
              "    40% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "    }\n",
              "    60% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "    }\n",
              "    80% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "      border-bottom-color: var(--fill-color);\n",
              "    }\n",
              "    90% {\n",
              "      border-color: transparent;\n",
              "      border-bottom-color: var(--fill-color);\n",
              "    }\n",
              "  }\n",
              "</style>\n",
              "\n",
              "      <script>\n",
              "        async function quickchart(key) {\n",
              "          const quickchartButtonEl =\n",
              "            document.querySelector('#' + key + ' button');\n",
              "          quickchartButtonEl.disabled = true;  // To prevent multiple clicks.\n",
              "          quickchartButtonEl.classList.add('colab-df-spinner');\n",
              "          try {\n",
              "            const charts = await google.colab.kernel.invokeFunction(\n",
              "                'suggestCharts', [key], {});\n",
              "          } catch (error) {\n",
              "            console.error('Error during call to suggestCharts:', error);\n",
              "          }\n",
              "          quickchartButtonEl.classList.remove('colab-df-spinner');\n",
              "          quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
              "        }\n",
              "        (() => {\n",
              "          let quickchartButtonEl =\n",
              "            document.querySelector('#df-8018d6e6-41e5-46f5-9f05-4aefd10cffd3 button');\n",
              "          quickchartButtonEl.style.display =\n",
              "            google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "        })();\n",
              "      </script>\n",
              "    </div>\n",
              "\n",
              "    </div>\n",
              "  </div>\n"
            ],
            "text/plain": [
              "  subscriber_type        forecast_timestamp  forecast_value  confidence_level  \\\n",
              "0      Subscriber 2018-05-01 00:00:00+00:00       43.450790              0.95   \n",
              "1      Subscriber 2018-05-01 01:00:00+00:00       29.705200              0.95   \n",
              "2      Subscriber 2018-05-01 02:00:00+00:00       -0.492950              0.95   \n",
              "3      Subscriber 2018-05-01 03:00:00+00:00       10.734818              0.95   \n",
              "4      Subscriber 2018-05-01 04:00:00+00:00      -23.490402              0.95   \n",
              "\n",
              "   prediction_interval_lower_bound  prediction_interval_upper_bound  \\\n",
              "0                        36.525672                        50.375909   \n",
              "1                         7.928018                        51.482383   \n",
              "2                       -12.301750                        11.315850   \n",
              "3                       -10.788396                        32.258031   \n",
              "4                       -43.338348                        -3.642457   \n",
              "\n",
              "  ai_forecast_status  \n",
              "0                     \n",
              "1                     \n",
              "2                     \n",
              "3                     \n",
              "4                     "
            ]
          },
          "execution_count": 23,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "forecast_results.head(5)"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "WGJwVQbcRRcv"
      },
      "source": [
        "We can view the results as a chart using python."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "fVwumTBNUZSO"
      },
      "outputs": [
        {
          "data": {
            "image/png": "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r18fmZmZOOWUU7Bs2TIAwF9//YXLLrsMJ5xwArKzs9GhQwf873//Czvua6+9hg4dOiArKwt16tRB3759UVJSgqlTp+K5557DW2+9ZXoYGveQIAiCIAiCIAiCIAhvQh55ktE0DUf9waQfNystxXWWzIMHD2L16tWYMWMGcnJyIr6vWbOm6+NOmjQJW7Zswbvvvou6deti+/btOHr0KABg48aNOOOMM7Bq1Sq0b98e6enpAIB58+Zhzpw5eOqpp9C5c2fMnz8fQ4YMwffff4+TTjrJLHvKlCmYO3cuTjzxRFx99dUYMWIE8vLyMG/ePGRnZ2PYsGGYPHkynnzySQDAokWLMHnyZDz22GPo3Lkzvv76a1x77bXIycnBlVdeaZY7ceJEzJkzB507d0ZmZqbrczV44403cPPNN2Pu3Lno27cvli1bhquuugqNGzdGr169zO2mTp2KWbNmYe7cuUhNTcVHH32EUaNG4ZFHHkG3bt2wY8cOXHfddea5qqqKQYMG4ciRI3jxxRfRsmVLbNmyxfQELCsrQ9euXXHnnXciPz8f77zzDq644gq0bNkSZ5xxBvbu3YvLLrsMDzzwAC6++GIcOXIEH330ETRNw2233YatW7eiqKjIFFpr167NfO4EQRAEQRAEQRAEQSQPEvIkc9QfRLvJK5J+3C3TByA73d3t3b59OzRNQ5s2bRI+7p49e9C5c2ecdtppAPS15QwMD7Y6deqgQYMG5uezZ8/GnXfeieHDhwMA7r//fqxZswZz587F448/bm532223YcCAAQCAm2++GZdddhlWr16Nc889FwAwZswYLFy40Nx+ypQpmDNnDi655BIAukfgli1b8NRTT4UJeRMmTDC3icWdd96Ju+++2/z7vvvuw/jx4zF79myMHj0aN954IwCYXoyzZ88OE/JGjBiBq666yvz76quvxsSJE01bWrRogXvuuQd33HEHpkyZglWrVmHjxo3YunUrWrdubW5jcMIJJ+C2224z/77pppuwYsUKvPLKK6aQFwgEcMkll6Bp06YAgA4dOpjbZ2Vloby8POxeEARBEARBEARBEAThXUjII6BpmrCybrjhBgwdOhRfffUV+vfvj4suugjnnHNO1O2Liorw+++/m2KcwbnnnovNmzeHfdaxY0fz9/r16wMIF6bq16+PAwcOAABKSkqwY8cOjBkzJmxdu0AggBo1aoSVa4iO8bj99tsxevRo8++6desCALZu3Wp60lntnzdvXszjbN68GevXrzfDbAEgGAyirKwMpaWl2LRpExo3bmyKeHaCwSDuu+8+vPLKK/jtt99QUVGB8vJyZGdnAwBOPfVU9OnTBx06dMCAAQPQv39/XHrppahVq5ar8yUIgiAIgiAIgiAIwluQkCeZrLQUbJk+oFKO65aTTjoJiqLgxx9/jLmdz6cvqWgV/vx+f9g2gwYNwu7du7F8+XKsXLkSffr0wdixYzF79mwG652xJocwwobtn6mqCgAoLi4GADzzzDM488wzw8qxJ6lwCid2om7dumjVqhW74VGOU1xcjGnTpjl6A2ZmZiIrKytmeQ8++CDmzZuHuXPnokOHDsjJycGECRNQUVEBQD/PlStX4pNPPsH777+PRx99FP/+97/x2WefmesVEgRBEARBEARBEARRdaBkF5JRFAXZ6alJ/3G7Ph6gr43Wu3dvPPHEEygpKYn4vrCwEMCx0Ni9e/ea31kTXxgUFBTgyiuvxIsvvoi5c+fi6aefBgBzTbxg8Niagfn5+WjUqBHWr18fVsb69evRrl071+dgp379+mjUqBF+/vlntGrVKuxHtIjVtm1bLvu7dOmCH3/8McK+Vq1awefzoWPHjvj111/x008/Oe6/fv16XHjhhbj88stx6qmnokWLFhHbKoqCc889F9OmTcPXX3+N9PR0vPHGGwD0+2G9FwRBEARBEARBEARBeBvyyCMA6OvUDRo0CGeccQamT5+Ojh07IhAIYOXKlXjyySexdetWZGVl4ayzzsKsWbPQvHlzHDhwIGzNOACYPHkyunbtivbt26O8vBzLli1D27ZtAQD16tVDVlYW3nvvPTRu3BiZmZmoUaMGbr/9dkyZMgUtW7ZEp06dsGDBAmzatClmBlk3TJs2DePHj0eNGjUwcOBAlJeX44svvsChQ4dwyy23JFS2ldtvvx3Dhg1D586d0bdvX7z99ttYsmQJVq1aFXO/yZMn44ILLsCJJ56ISy+9FD6fD5s3b8Z3332HGTNmoEePHujevTuGDh2Khx56CK1atcIPP/wARVEwcOBAnHTSSXjttdfwySefoFatWnjooYewf/9+U0D87LPPsHr1avTv3x/16tXDZ599hj/++MO8H82aNcOKFSvw448/ok6dOqhRo0aYhyNBEARBEARB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u3dHRkYGPvjgA3z55Ze4+uqrEQgce8uxevVq/Pjjj1i5ciWWLVsW1YZJkyZh6NCh2Lx5M0aOHInhw4dj69atAAC/348BAwYgLy8PH330EdavX4/c3FwMHDgQFRUVzMeKhqqquPDCC3Hw4EF8+OGHWLlyJX7++Wf84x//CNtu+/bteP3117FkyRJTKP373/+OAwcO4N1338WXX36JLl26oE+fPjh48CAA4J133sHFF1+M8847D19//TVWr16NM844wyzT7/fjnnvuwebNm/Hmm29i165dGD16dNj12bJlC959911s3boVTz75JOrWrQsA2LhxIwBg1apV2Lt3L5YsWcJ87gRBEARBEMRxhCE6sHoQmduLnOzzJAowFuf3AcGK2JsS1RfmUHUjFFuG+MuRtZY3SUZcGJNd2MVw4UI9QaG1svGXAvc1Sv5x/+93ID3H1aapqal4/PHHMWHCBDz11FPo0qULevTogeHDh6Njx47Mh54yZQr69esHAHjuuefQuHFjvPHGGxg2bBj27NmDoUOHokOHDgCAFi1amPs9/vjjqFGjBl5++WWkpaUBAFq3bh1Wdk5ODp599tm44ad///vfcc011wAA7rnnHqxcuRKPPvoonnjiCSxevBiqquLZZ5+FEsqks2DBAtSsWRNr165F//79mY51+PBhU4wEdGF03759WL16Nb799lvs3LkTTZo0AQA8//zzaN++PT7//HOcfvrpAPRw2ueff94MEf7444+xceNGHDhwABkZGQCA2bNn480338Rrr72G6667Dvfeey+GDx+OadOmmcc99dRTzd+vvvpq8/cWLVrgkUcewemnn47i4mLk5uZiz5496Ny5M0477TQAulejgWFHnTp10KBBg5jnThAEQRAEQVQW6rGQUC9kh+T1yDMEPaGnwLlen+KDnFBJwttwhnmbYdwChTwzzJt3TTqBhB2ftWwlpP+RiCcD8sgjAABDhgzBr7/+iqVLl2LgwIFYu3YtunTpgoULFzKXdfbZZ5u/165dG23atDG94caPH48ZM2bg3HPPxZQpU/DNN9+Y227atAndunUzRTwnOnTo4GoNOasNxt+GDZs3b8b27duRl5dneiPWrl0bZWVlZhgvy7Hy8vKwadMm8+eTTz4BAGzduhVNmjQxRTwAaNeuHWrWrGnaAgBNmzYNW+dv8+bNKC4uRp06dUz7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npbPZhckU1qLOLqui7e//e246667cM455+CP//iPMTQ0hC996Us4//zzBzdQsqzwfR/33HMP3vSmN8G2bXzzm9/E/vvvDwBYWFjAW97yFjzxxBP453/+ZziOM+DRkuXAU089hde97nUYHh7GySefjKOPPhpveMMbcMEFF+ATn/gEXvva16JUKuGGG24Y9FDJgAmLPjcWf37sscdw7rnn4vLLL8eZZ54JAPjud7+Lc889FzfffDOe97znDXLIZMBEFaQOX3vooYfwqle9Cq9//evxnve8BwDr5ZE6rUXmeR9MOhHeA59//vmwLIv3wKQjO3bswHnnnYeRkRE897nP5T3wMsX3ffzTP/0Tzj77bADyAPmb3/wmtm7diquuugoTExNN9xue58E0zcTLt3IZNVk1bNu2Db/4xS9gWRYOO+wwbNy4sfY313VhWRY+9alP4R3veAe+/vWvw/d9PPzww/ibv/kbnH766TjooIMGOHoyKBrj5hnPeAY2bdqE448/Hn/3d3+HJ554ohZHnuehVCrhiCOOwP3338+UlFVMY8wceuih2Lx5Mz796U/j8ssvxw033AClFC666KJaasr69evxX//1XwMeNRkk5XIZhUIBwNLJ9QEHHIBbbrkF4+Pjtb8ppTA1NdX0PUZWF2HMRAlz4Y32oYceiqOOOgrf+MY3cNlllwFgh8DVzK5du/D4448DAPbff39MTk7WJmae5/E+mCyhMWb2228/rFmzBscccwz+9m//Ftu2beM9MFlCY8xs3rwZU1NTuO6663DFFVfgy1/+MrTWvAdehhiGURPxAODd7343lFK4+eab8b73vQ9XX301xsfHcd111+Hiiy9OJeIBdOSRHvjZz36GV77ylbBtG/Pz8/B9H5/5zGdw9tln154YhWJe+ETyhhtuQKFQwG233YatW7cOeAvIIIiKm09/+tP43d/9XZimGTkh+oM/+ANorfGFL3wBlsXnD6uNqJi57rrr8JrXvAYLCwtwXRe7du2qTYi01jjnnHNw8MEH42Mf+9iAR08GwYMPPog3v/nNuPLKK/HCF74w8rrS+tpll12GH/3oR7jpppswOTnZ7yGTAZMkZkKB5r/+679w8skn48///M/xR3/0RwMaMRk09957L84//3zMzc1hfn4eW7duxac//WkceOCBtfeEDgveBxMgOmY+9alP4aCDDoLneVBKLXED8x54ddMaM8cffzw++clP4tBDD611qN29e3ftusN74MHx2GOP4a677kK1WsXWrVtx2GGH1f7WqIl8/OMfx80334ytW7fCdV1cf/31+MUvfoFnPvOZ6VaoCemCp556Sh9++OH6Pe95j37iiSf0nXfeqS+99FJtmqa+5ppr9PT0dO29rutqrbV+29vepicnJ/V99903qGGTAdMpbmZmZpre//TTT+v3vve9empqSt9///0DGjUZJHExYxiGvuqqq/TevXub3v9f//Vf+r3vfa+enJzUDz744IBGTQbJr3/9a33YYYfptWvX6hNOOEHfdtttWmutfd+PfP9jjz2m3/Oe9+jJyUl9zz339HOoZJmQNmZmZmb0c5/7XP2GN7xBl8vlfg6VLBN+8Ytf6KmpKf3ud79b33vvvfrLX/6yftGLXqQ/9rGPaa2bY8fzPK0174NXO2liRmveA5P4mPnoRz+qta5fW0J4Dzw47rnnHr1x40Z91FFH6QMPPFAXi0X9F3/xF/rxxx+vvadarWqtRRu5+uqrdalU0hMTE/onP/lJV+ukkEe64uGHH9ZHHHGEvvPOO5te/4u/+AutlNKf/vSntdb1C8wXv/hFrZTSd999d9/HSpYPaeLmlltu0W9605v0/vvvz7hZxaSJme3bt+sPf/jD+sADD+z6S5GsbBYXF/VFF12kX/3qV+uvfvWr+jWveY0+9thjm4SZxsnSD37wA33RRRfpww8/nDGzSkkSM1HccsstnCitUmZnZ/V5552nL7zwwqbXzz//fP385z8/8jO8D17dpI2Zb3/727wHXuWkjZmnnnqK98ADYteuXXrr1q36Pe95j96zZ4/etm2b/uhHP6qHhob0xRdfrB966KHaexsf7IyNjfX0YIfttkhXTE9P49e//nWt81a1WgUAXHLJJbjqqqtw6aWX4q677qrZwy+44AI8/PDDTCNY5aSJm61bt+IFL3gB/uM//oNxs4pJEzNr167FBRdcgP/8z//E8ccfP8BRk0FRKBTw8pe/HGeeeSZe+9rX4tJLL8URRxyBd7zjHfj3f//3Wi28kKOOOgpnn302/u3f/o0xs0pJEjONhNeiM888E1u2bBnEkMmAWVxcxMaNG/GiF70IAGqdB1/96lfD8zy4rruknhnvg1c3aWPmuOOO4z3wKidtzExOTuL888/nPfAAcF0X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\n",
            "text/plain": [
              "<Figure size 1500x700 with 1 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        }
      ],
      "source": [
        "import matplotlib.pyplot as plt\n",
        "\n",
        "# Separate the data by subscriber type\n",
        "customer_df = forecast_results[forecast_results[\"subscriber_type\"] == \"Customer\"]\n",
        "subscriber_df = forecast_results[forecast_results[\"subscriber_type\"] == \"Subscriber\"]\n",
        "\n",
        "# Create a figure and axes for the plot\n",
        "fig, ax = plt.subplots(figsize=(15, 7))\n",
        "\n",
        "# Plot the forecast for 'Customer'\n",
        "ax.plot(\n",
        "    customer_df[\"forecast_timestamp\"],\n",
        "    customer_df[\"forecast_value\"],\n",
        "    label=\"Customer Forecast\",\n",
        ")\n",
        "ax.fill_between(\n",
        "    customer_df[\"forecast_timestamp\"],\n",
        "    customer_df[\"prediction_interval_lower_bound\"],\n",
        "    customer_df[\"prediction_interval_upper_bound\"],\n",
        "    color=\"blue\",\n",
        "    alpha=0.1,\n",
        "    label=\"Customer Confidence Interval\",\n",
        ")\n",
        "\n",
        "# Plot the forecast for 'Subscriber'\n",
        "ax.plot(\n",
        "    subscriber_df[\"forecast_timestamp\"],\n",
        "    subscriber_df[\"forecast_value\"],\n",
        "    label=\"Subscriber Forecast\",\n",
        ")\n",
        "ax.fill_between(\n",
        "    subscriber_df[\"forecast_timestamp\"],\n",
        "    subscriber_df[\"prediction_interval_lower_bound\"],\n",
        "    subscriber_df[\"prediction_interval_upper_bound\"],\n",
        "    color=\"orange\",\n",
        "    alpha=0.1,\n",
        "    label=\"Subscriber Confidence Interval\",\n",
        ")\n",
        "\n",
        "\n",
        "# Set the title and labels\n",
        "ax.set_title(\"Bikeshare Trips Forecast\")\n",
        "ax.set_xlabel(\"Date\")\n",
        "ax.set_ylabel(\"Number of Trips\")\n",
        "ax.legend()\n",
        "ax.grid(True)\n",
        "\n",
        "# Rotate the x-axis labels for better readability\n",
        "plt.xticks(rotation=45)\n",
        "\n",
        "# Show the plot\n",
        "plt.show()"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "tc_YRVNIfS7Q"
      },
      "source": [
        "The forecast shows usage patterns you might expect:\n",
        "\n",
        "* **Subscribers** are typically commuters who use the service for regular, predictable trips, such as going to and from work. Their forecast shows expected weekday peaks during morning and evening commute hours, and lower weekend usage.\n",
        "\n",
        "* **Customers** are usually tourists or casual riders and you might expect them to have higher usage on weekends and holidays for leisure activities, and more trips during the middle of the day, rather than concentrated during traditional commute times.\n",
        "\n",
        "An interesting start to an analysis without any model training!\n"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "cleanup_md"
      },
      "source": [
        "# Cleaning Up\n",
        "\n",
        "To clean up all Google Cloud resources used in this project, you can [delete the Google Cloud project](https://cloud.google.com/resource-manager/docs/creating-managing-projects#shutting_down_projects) you used for the tutorial.\n",
        "\n",
        "Otherwise, you can delete the individual resources you created in this tutorial:"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "cleanup_code"
      },
      "outputs": [],
      "source": [
        "# Delete BigQuery dataset, including the BigQuery remote model you just created, and the BigQuery Connection\n",
        "! bq rm -r -f $PROJECT_ID:bq_ai_tutorial\n",
        "! bq rm --connection --project_id=$PROJECT_ID --location=us test_connection"
      ]
    }
  ],
  "metadata": {
    "colab": {
      "name": "bigquery_generative_ai_intro.ipynb",
      "toc_visible": true
    },
    "kernelspec": {
      "display_name": "Python 3",
      "name": "python3"
    }
  },
  "nbformat": 4,
  "nbformat_minor": 0
}
